etcp: чистка — убрать мёртвый peer_id/guard reset_id, поправить комментарий STCP_HS
This commit is contained in:
1 parent
f36ad8903a
commit
70a18c8be8
4 files changed
+8
-8
No files matched your search
@@ -639,7 +639,7 @@ void etcp_conn_reinit_id(struct ETCP_CONN* etcp, const char* reason, uint64_t re
|
||||
|
||||
// Применение чужого reset_id (эпохи ресета пира). Симметрично:
|
||||
// если uid пира изменился — сбрасываем своё состояние (свой uid сохраняем).
|
||||
void etcp_conn_apply_peer_reset_id(struct ETCP_CONN* conn, uint64_t peer_id, uint64_t peer_reset_id) {
|
||||
void etcp_conn_apply_peer_reset_id(struct ETCP_CONN* conn, uint64_t peer_reset_id) {
|
||||
if (!conn) return;
|
||||
if (peer_reset_id == conn->peer_reset_id) return; // uid пира не изменился
|
||||
conn->peer_reset_id = peer_reset_id;
|
||||
|
||||
@@ -258,7 +258,7 @@ void etcp_conn_reinit_id(struct ETCP_CONN* etcp, const char* reason, uint64_t re
|
||||
// Фатальный ресет (normalizer desync / bad fragment size): генерит новую эпоху reset_id
|
||||
void etcp_conn_fatal_reinit(struct ETCP_CONN* etcp, const char* reason);
|
||||
// Применение чужого reset_id: при отличии — slave принимает эпоху пира и ресетится, master пересылает свою
|
||||
void etcp_conn_apply_peer_reset_id(struct ETCP_CONN* conn, uint64_t peer_id, uint64_t peer_reset_id);
|
||||
void etcp_conn_apply_peer_reset_id(struct ETCP_CONN* conn, uint64_t peer_reset_id);
|
||||
|
||||
void etcp_connection_ready(struct ETCP_CONN* etcp);// вызывается когда подключение инициализировано
|
||||
|
||||
|
||||
@@ -1072,12 +1072,12 @@ void etcp_link_enter_ready_tcp(struct ETCP_LINK *link) {
|
||||
if (link->tcp_link) {
|
||||
uint8_t peer_gop = stcp_link_get_peer_got_initial_pkt(link->tcp_link);
|
||||
uint64_t peer_rid = stcp_link_get_peer_reset_id(link->tcp_link);
|
||||
if (etcp->got_initial_pkt == 1 && peer_gop == 0 && peer_rid != etcp->reset_id) {
|
||||
if (etcp->got_initial_pkt == 1 && peer_gop == 0) {
|
||||
DEBUG_INFO(DEBUG_CATEGORY_ETCP, "[%s] TCP ready: I'm dirty (gop=1) but peer clean (gop=0) → reinit",
|
||||
etcp->log_name);
|
||||
etcp_conn_reinit(etcp, "tcp peer clean");
|
||||
}
|
||||
etcp_conn_apply_peer_reset_id(etcp, etcp->peer_node_id, peer_rid);
|
||||
etcp_conn_apply_peer_reset_id(etcp, peer_rid);
|
||||
|
||||
link->peer_device_type = stcp_link_get_peer_device_type(link->tcp_link);
|
||||
{ uint16_t peer_ka = stcp_link_get_peer_keepalive_interval(link->tcp_link);
|
||||
@@ -1753,7 +1753,7 @@ static int handle_init_response_client(struct ETCP_SOCKET* e_sock, struct ETCP_D
|
||||
uint64_t server_node_id = be64toh(*(uint64_t*)resp->node_id);
|
||||
uint64_t resp_reset_id = be64toh(*(uint64_t*)resp->reset_id);
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_CONNECTION, "INIT_RESPONSE rid=%016llx", (unsigned long long)resp_reset_id);
|
||||
etcp_conn_apply_peer_reset_id(link->etcp, server_node_id, resp_reset_id);
|
||||
etcp_conn_apply_peer_reset_id(link->etcp, resp_reset_id);
|
||||
link->mtu_remote = be16toh(*(uint16_t*)resp->mtu);
|
||||
if (link->mtu_remote > PACKET_DATA_MAX_MTU) link->mtu_remote = PACKET_DATA_MAX_MTU;
|
||||
link->mtu = link->mtu_local < link->mtu_remote ? link->mtu_local : link->mtu_remote;
|
||||
@@ -2280,7 +2280,7 @@ create_new_link:
|
||||
memcpy(conn->peer_ed25519_pubkey, req->ed25519_pubkey, SC_PUBKEY_SIZE);
|
||||
|
||||
// Применяем эпоху ресета пира ПОСЛЕ всей reinit-логики
|
||||
etcp_conn_apply_peer_reset_id(conn, peer_id, reset_id);
|
||||
etcp_conn_apply_peer_reset_id(conn, reset_id);
|
||||
|
||||
send_init_response(e_sock, pkt, link, conn, req, &addr, send_reset, req_src_ip, req_src_port, pkt_len);
|
||||
return;
|
||||
|
||||
@@ -28,8 +28,8 @@ typedef void (*stcp_ping_cb)(int success, uint16_t rtt, void *arg);
|
||||
#define STCP_HS_TIMEOUT 50000 // 5s in 0.1ms timebase units
|
||||
#define STCP_CONNECT_TIMEOUT 100000 // 10s in 0.1ms timebase units
|
||||
|
||||
#define STCP_HS_CLIENT_MIN (SC_PUBKEY_ENC_SIZE + STCP_HS_ENC_CLIENT) // 40+55=95
|
||||
#define STCP_HS_SERVER_MIN (SC_PUBKEY_ENC_SIZE + STCP_HS_ENC_SERVER) // 40+55=95
|
||||
#define STCP_HS_CLIENT_MIN (SC_PUBKEY_ENC_SIZE + STCP_HS_ENC_CLIENT) // 40+51=91
|
||||
#define STCP_HS_SERVER_MIN (SC_PUBKEY_ENC_SIZE + STCP_HS_ENC_SERVER) // 40+51=91
|
||||
#define STCP_HS_ENC_CLIENT 51 // ed25519_pubkey(32) + got_initial_pkt(1) + reset_id(8) + padding_size(2) + device_type(1) + keepalive(2) + flags(1) + CRC32(4)
|
||||
#define STCP_HS_ENC_SERVER 51 // ed25519_pubkey(32) + got_initial_pkt(1) + reset_id(8) + padding_size(2) + device_type(1) + keepalive(2) + flags(1) + CRC32(4)
|
||||
|
||||
|
||||
Reference in new issue
Block a user