Browse Source

Trigger NAT rechecks after direct timeout and exhausted reverse

master
evgeny 7 days ago
parent
commit
3b894753b1
  1. 3
      src/routing_layer/conn_mgr_core.c
  2. 2
      src/transport_layer/node_conn_direct.c

3
src/routing_layer/conn_mgr_core.c

@ -22,6 +22,7 @@
#include "topo_node.h"
#include "topo_node_sqlite.h"
#include "sock_match.h"
#include "nat_detection.h"
#include "topo_group.h"
#include "route_ping.h"
#include "ntp_time.h"
@ -443,6 +444,8 @@ static void cm_attempt_tick(void* arg) {
}
if (entry->state == CONN_MGR_STATE_DISCONNECTED) return;
if (entry->attempt_active && now >= entry->deadline_tb) {
if (!direct_ready && entry->reverse_started && entry->ncd_handle)
nat_detection_connection_failed(entry->mgr->instance->nat_det, node_conn_direct_get_conn(entry->ncd_handle), 1);
entry->attempt_active = 0;
if (!entry->retry_delay_ms) entry->retry_delay_ms = CONN_MGR_RETRY_MIN_MS;
entry->retry_tb = now + entry->retry_delay_ms * 10;

2
src/transport_layer/node_conn_direct.c

@ -16,6 +16,7 @@
#include "topo_node.h"
#include "topo_node_sqlite.h"
#include "sock_match.h"
#include "nat_detection.h"
#include "topo_group.h"
#include "ntp_time.h"
#include "config_parser.h"
@ -582,6 +583,7 @@ static void ncd_connect_timeout_cb(void* arg) {
entry->connect_timer = NULL;
DEBUG_WARN(DEBUG_CATEGORY_NCD, "[ncd] connect TIMEOUT: node=0x%016llx now_tb=%llu handles=%d",
(unsigned long long)entry->node_id, (unsigned long long)get_time_tb(), entry->handle_count);
nat_detection_connection_failed(entry->inst->nat_det, entry->conn, 0);
ncd_event_dispatch(entry, NCD_EVENT_TIMEOUT);
}

Loading…
Cancel
Save