Browse Source

1

nodeinfo-routing-update
Evgeny 1 week ago
parent
commit
46b62e2e77
  1. 4
      src/etcp_connections.c
  2. 24
      tests/test_etcp_two_instances.c

4
src/etcp_connections.c

@ -114,7 +114,7 @@ static void etcp_link_send_init(struct ETCP_LINK* link, uint8_t reset) {
static void etcp_link_init_timer_cbk(void* arg) {
DEBUG_TRACE(DEBUG_CATEGORY_CONNECTION, "");
struct ETCP_LINK* link = (struct ETCP_LINK*)arg;
if (!link) return;
if (!link || !link->etcp || !link->etcp->instance) return;
if ((link->init_retry_count % 10) == 0 && link->init_timeout < INIT_TIMEOUT_MAX) {
link->init_timeout += link->init_timeout/4 +1;
@ -717,7 +717,7 @@ void start_stats_timer(struct ETCP_LINK* link) {
// === Новый callback таймера ===
static void link_stats_timer_cb(void* arg) {
struct ETCP_LINK* link = (struct ETCP_LINK*)arg;
if (!link || !link->etcp) return;
if (!link || !link->etcp || !link->etcp->instance) return;
// 1. Сохраняем снимок текущего окна
link->stat_win[link->win_ptr].rtt = link->rtt_avg10;

24
tests/test_etcp_two_instances.c

@ -248,6 +248,26 @@ static void test_timeout(void* arg) {
}
}
static void cleanup_instance_timers(struct UTUN_INSTANCE* instance, struct UASYNC* ua) {
if (!instance || !ua) return;
struct ETCP_CONN* conn = instance->connections;
while (conn) {
struct ETCP_LINK* link = conn->links;
while (link) {
if (link->keepalive_timer) {
uasync_cancel_timeout(ua, link->keepalive_timer);
link->keepalive_timer = NULL;
}
if (link->init_timer) {
uasync_cancel_timeout(ua, link->init_timer);
link->init_timer = NULL;
}
link = link->next;
}
conn = conn->next;
}
}
int main() {
// Create temp config files first
if (create_temp_configs() != 0) {
@ -382,6 +402,10 @@ int main() {
// uasync_print_resources(ua, "SHARED"); // disabled to prevent potential null deref with TUN disabled
}
// Explicit timer cleanup for all links (without changing library)
if (server_instance && ua) cleanup_instance_timers(server_instance, ua);
if (client_instance && ua) cleanup_instance_timers(client_instance, ua);
// Stop and destroy instances (safe for TUN-disabled mode)
if (server_instance) {
server_instance->running = 0;

Loading…
Cancel
Save