keepalive handshake: device_type + keepalive negotiation in UDP/TCP INIT
- Добавлен device_type (1 байт, CLIENT_TYPE_*) в INIT_REQUEST и INIT_RESPONSE - Добавлен keepalive_interval (2 байта) в INIT_RESPONSE - STCP handshake расширен с 43 до 46 байт (device_type+keepalive) - negotiate_keepalive(): оба desktop/server → min, иначе (есть mobile) → max - keepalive_interval вынесен в UTUN_INSTANCE для использования в handshake - stcp_client_connect() принимает device_type и keepalive_interval - peer_device_type/peer_keepalive_interval передаются через stcp_link в ETCP_LINK
This commit is contained in:
1 parent
43aca4a41b
commit
0f1bd3d120
37 files changed
+535
-309
No files matched your search
@@ -161,7 +161,10 @@ static void chat_event_forward(int type, const uint8_t* data, int len) {
|
||||
static void nodeinfo_event_cb(struct TOPO_GROUP* group, struct TOPO_GROUP_NODE* nq, void* arg) {
|
||||
(void)group; (void)arg;
|
||||
if (!nq || !g_event_handler) return;
|
||||
uint16_t best_rtt = node_best_rtt(nq);
|
||||
uint16_t best_rtt = topo_get_chain_rtt(nq);
|
||||
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "nodeinfo_cb: nid=%016llx pres=%02x up=%02x rtt=%u(0x%04X) paths=%zu",
|
||||
(unsigned long long)nq->node_id, nq->conn_presence, nq->conn_up,
|
||||
best_rtt, best_rtt, nq->paths ? queue_entry_count(nq->paths) : 0);
|
||||
uint8_t data[12];
|
||||
memcpy(data, &nq->node_id, 8);
|
||||
data[8] = nq->conn_presence;
|
||||
@@ -299,6 +302,7 @@ static void* instance_thread(void* arg) {
|
||||
etcp_router_bind(g_inst, ETCP_RT_ID_CHAT_SYNC, NULL);
|
||||
|
||||
utun_add_nodeinfo_cbk(g_inst, nodeinfo_event_cb, NULL);
|
||||
etcp_add_link_status_cbk(g_inst, on_link_status_changed, NULL);
|
||||
|
||||
/* Set my_name from config */
|
||||
if (g_inst->config->global.name[0]) {
|
||||
@@ -433,8 +437,11 @@ int instance_lite_start(const char* config_text) {
|
||||
debug_config_init();
|
||||
debug_set_level(DEBUG_LEVEL_INFO);
|
||||
debug_set_category_level(DEBUG_CATEGORY_SYS, DEBUG_LEVEL_INFO);
|
||||
debug_set_category_level(DEBUG_CATEGORY_CHAT_SYNC, DEBUG_LEVEL_TRACE);
|
||||
debug_set_category_level(DEBUG_CATEGORY_MEMBER_SYNC, DEBUG_LEVEL_TRACE);
|
||||
debug_set_category_level(DEBUG_CATEGORY_CHAT_SYNC, DEBUG_LEVEL_INFO);
|
||||
debug_set_category_level(DEBUG_CATEGORY_MEMBER_SYNC, DEBUG_LEVEL_INFO);
|
||||
debug_set_category_level(DEBUG_CATEGORY_DEBUG, DEBUG_LEVEL_INFO);
|
||||
debug_set_category_level(DEBUG_CATEGORY_ETCP, DEBUG_LEVEL_INFO);
|
||||
debug_set_category_level(DEBUG_CATEGORY_DUMP, DEBUG_LEVEL_WARN);
|
||||
debug_enable_function_name(0);
|
||||
|
||||
cfg_get_val(config_text, "db_path", g_db_path, sizeof(g_db_path));
|
||||
|
||||
Reference in new issue
Block a user