diff --git a/src/transport_layer/etcp_connections.c b/src/transport_layer/etcp_connections.c index 0dff31f85..6035e2815 100644 --- a/src/transport_layer/etcp_connections.c +++ b/src/transport_layer/etcp_connections.c @@ -1118,7 +1118,6 @@ static struct ETCP_LINK* link_create(struct ETCP_CONN* etcp, struct ETCP_SOCKET* link->conn = conn; link->codec = driver ? &bound_codec : (is_tcp ? &stcp_codec : &udp_codec); link->etcp = etcp; - link->require_known_node = driver && etcp->require_known_node; /* Сокеты UTUN не требуют членства CHAT. */ link->is_server = is_server; link->is_tcp = (uint8_t)is_tcp; int mtu; @@ -1258,7 +1257,7 @@ struct ETCP_LINK* etcp_link_add(struct ETCP_CONN* conn, const struct packet_link DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "link_add: packet capacity too small: %zu", state.max_packet); return NULL; } struct ETCP_LINK* link = link_create(conn, NULL, NULL, 0, driver); - if (link) link->require_known_node |= !!require_known_node; /* RX/state callbacks драйвера отложены. */ + if (link) link->require_known_node = !!require_known_node; /* RX/state callbacks драйвера отложены. */ return link; } diff --git a/src/transport_layer/etcp_connections.h b/src/transport_layer/etcp_connections.h index 3020f4c7b..841cbcd5f 100644 --- a/src/transport_layer/etcp_connections.h +++ b/src/transport_layer/etcp_connections.h @@ -240,7 +240,7 @@ struct ETCP_LINK { uint32_t recovery_interval; // recovery интервал (x0.1ms) uint8_t is_server; // инициирует подключение клиент uint8_t initialized; // Флаг инициализации (1=подтверждено или получен request) - uint8_t require_known_node; // Эффективная политика пути: драйвер наследует conn и может усилить её; сокеты UTUN — 0. + uint8_t require_known_node; // Допуск только этого линка: штатный BLE=1, сокеты UTUN=0; общий ETCP_CONN политики не имеет. uint8_t peer_admitted; // Положительный результат проверки после аутентифицированного handshake; сбрасывается при новом INIT. uint8_t closing; // Close начат: повторный вход из callback игнорируется до окончательного free uint32_t active_users; // Внутренние стеки конструктора/RX/событий; память закрытого линка живёт до выхода последнего @@ -434,7 +434,7 @@ void tcp_server_on_link(struct stcp_link *link, struct ETCP_SOCKET *tcp_sock); * Уведомляет о создании, для исходящего UDP запускает INIT. Ошибка/close из callback — NULL без живого линка. * Конструктор удерживает память до возврата; отмена сразу закрывает ресурсы. */ /* Добавить произвольный пакетный драйвер к conn с настроенным ключом пира. - * require_known_node=1 усиливает политику conn для этого пути; 0 наследует начальную политику conn. + * require_known_node=1 проверяет известность ключа при handshake только этого пути; 0 — без CHAT-фильтра. * На канале используется защищённый ETCP INIT/DATA без IP-заголовков. OPEN драйвера ещё не UP ETCP. * Успех копирует API и забирает ctx; отказ оставляет ctx непривязанным у вызывающего. * Начальный handshake/callbacks отложены. Все операции — conn->instance->ua. */