diff --git a/src/etcp.c b/src/etcp.c index 6968e942..1e6bfcf8 100644 --- a/src/etcp.c +++ b/src/etcp.c @@ -5,6 +5,7 @@ #include "etcp_loadbalancer.h" #include "routing.h" #include "route_bgp.h" +#include "route_ping.h" #include "../lib/u_async.h" #include "../lib/ll_queue.h" #include "../lib/debug_config.h" @@ -351,6 +352,19 @@ void etcp_conn_reinit(struct ETCP_CONN* etcp) {// Если сбой в обме etcp->initialized = 0;// еще раз придёт conn_ready_callback + // Отменяем висящие NAT-ping'и для этого соединения + if (etcp->instance && etcp->instance->bgp) { + route_ping_cancel_for_conn(etcp->instance->bgp, etcp); + } + + // Сбрасываем NAT-статус у всех линков этого соединения + struct ETCP_LINK* l = etcp->links; + while (l) { + l->nat_type = NAT_TYPE_UNKNOWN; + l->nat_check_status = NAT_CHECK_NONE; + l = l->next; + } + // Вызываем etcp_conn_reset для сброса состояния etcp_conn_reset(etcp);