Document failure recheck limits and validate requested endpoints

This commit is contained in:
evgeny committed 2026-10-12 20:26:12 +02:00
1 parent 3b894753b1
commit 2dc7e8d206
2 files changed
+15 -2

No files matched your search

+3 -1
View File
@@ -1055,7 +1055,9 @@ static void receive_control(struct ETCP_CONN *from, struct ll_entry *entry) {
struct ETCP_SOCKET *socket = find_socket(detector, request.socket_id, 0);
struct sockaddr_storage address = {0};
if (request.cmd != ETCP_RT_ID_NAT_DETECTION || request.command != NAT_RECHECK || request.version != NAT_WIRE_VERSION ||
!socket || socket->is_tcp || socket->probe_only || socket->socks_udp || route_ping_addr_decode(&address, request.address) ||
!socket || socket->is_tcp || socket->probe_only || socket->socks_udp ||
socket->type == CFG_SERVER_TYPE_LOCAL || socket->type == CFG_SERVER_TYPE_PRIVATE ||
route_ping_addr_decode(request.address, &address) ||
(!route_ping_addr_equal(&address, &socket->local_addr, 1) && !route_ping_addr_equal(&address, &socket->nat_addr, 1))) {
DEBUG_WARN(DEBUG_CATEGORY_NAT, "NAT failure recheck rejected group=%016llx peer=%016llx socket=%u: stale/invalid endpoint",
(unsigned long long)group_id, (unsigned long long)sender, request.socket_id); return;