From c1518d5f2a42a026d18574f3b2b233e50074e6b1 Mon Sep 17 00:00:00 2001 From: Pavel Punsky Date: Sun, 19 Apr 2026 19:37:52 -0700 Subject: [PATCH] Drop udp_relay_servers_number config and clean up dead UDP id-space (#1874) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Remove the `udp-relay-servers` config knob and the `udp_relay_servers_number` field — after #1849 left only the `PER_THREAD` UDP engine, this knob is no longer wired to anything that creates extra UDP relay threads. - Delete the now-orphaned `udp_relay_servers[]` array, the `TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP` / `..._UDP_AND_TCP` macros, and the `id >= boundary` branch in `get_relay_server()`. The array was read but never written anywhere in the tree, so the branch was unreachable dead code. - Drop a stray unused `char s[257]` in `dbd_redis.c::redis_list_secrets`. - Adjust the startup banner to log "Total relay threads" (was "Total General servers" + a never-fired "Total UDP servers" block). ## Test plan - [x] `cmake .. && make -j8` clean build - [x] `examples/scripts/rfc5769.sh` — all RFC 5769 conformance vectors pass - [x] `examples/scripts/basic/relay.sh` + `udp_c2c_client.sh` — 12000/12000 msgs, 0 lost, 0 dropped --- src/apps/relay/dbdrivers/dbd_redis.c | 2 -- src/apps/relay/mainrelay.c | 1 - src/apps/relay/mainrelay.h | 4 --- src/apps/relay/netengine.c | 53 ++++++---------------------- 4 files changed, 10 insertions(+), 50 deletions(-) diff --git a/src/apps/relay/dbdrivers/dbd_redis.c b/src/apps/relay/dbdrivers/dbd_redis.c index 5e8eb493..cba897be 100644 --- a/src/apps/relay/dbdrivers/dbd_redis.c +++ b/src/apps/relay/dbdrivers/dbd_redis.c @@ -753,8 +753,6 @@ static int redis_list_secrets(uint8_t *realm, secrets_list_t *secrets, secrets_l if (reply) { secrets_list_t keys; size_t isz = 0; - char s[257]; - init_secrets_list(&keys); if (reply->type == REDIS_REPLY_ERROR) { diff --git a/src/apps/relay/mainrelay.c b/src/apps/relay/mainrelay.c index 54c79eac..4877f2ae 100644 --- a/src/apps/relay/mainrelay.c +++ b/src/apps/relay/mainrelay.c @@ -176,7 +176,6 @@ turn_params_t turn_params = { NULL, /*external_ip*/ DEFAULT_GENERAL_RELAY_SERVERS_NUMBER, /*general_relay_servers_number*/ - 0, /*udp_relay_servers_number*/ UR_SERVER_SOCK_BUF_SIZE, ////////////// Auth server ///////////////////////////////////// diff --git a/src/apps/relay/mainrelay.h b/src/apps/relay/mainrelay.h index 55ce9361..70c64dc8 100644 --- a/src/apps/relay/mainrelay.h +++ b/src/apps/relay/mainrelay.h @@ -151,9 +151,6 @@ static inline int _msvc_cas_weak(volatile LONG *ptr, band_limit_t *expected, ban #define MAX_NUMBER_OF_GENERAL_RELAY_SERVERS ((uint8_t)(0x80)) -#define TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP MAX_NUMBER_OF_GENERAL_RELAY_SERVERS -#define TURNSERVER_ID_BOUNDARY_BETWEEN_UDP_AND_TCP TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP - #define DEFAULT_CPUS_NUMBER (2) /////////// TYPES /////////////////////////////////// @@ -285,7 +282,6 @@ typedef struct _turn_params_ { ioa_addr *external_ip; turnserver_id general_relay_servers_number; - turnserver_id udp_relay_servers_number; int sock_buf_size; diff --git a/src/apps/relay/netengine.c b/src/apps/relay/netengine.c index 768f9158..68ed026c 100644 --- a/src/apps/relay/netengine.c +++ b/src/apps/relay/netengine.c @@ -72,11 +72,8 @@ static struct auth_server authserver[256]; #define get_real_general_relay_servers_number() \ (turn_params.general_relay_servers_number > 1 ? turn_params.general_relay_servers_number : 1) -#define get_real_udp_relay_servers_number() \ - (turn_params.udp_relay_servers_number > 1 ? turn_params.udp_relay_servers_number : 1) static struct relay_server *general_relay_servers[1 + ((turnserver_id)-1)]; -static struct relay_server *udp_relay_servers[1 + ((turnserver_id)-1)]; static struct relay_server *get_relay_server(turnserver_id id); @@ -415,29 +412,15 @@ static void allocate_relay_addrs_ports(void) { static int handle_relay_message(relay_server_handle rs, struct message_to_relay *sm); static struct relay_server *get_relay_server(turnserver_id id) { - struct relay_server *rs = NULL; - if (id >= TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { - const size_t dest = id - TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; - if (dest >= get_real_udp_relay_servers_number()) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Too large UDP relay number: %d, total=%d\n", __FUNCTION__, (int)dest, - (int)get_real_udp_relay_servers_number()); - } - rs = udp_relay_servers[dest]; - if (!rs) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Wrong UDP relay number: %d, total=%d\n", __FUNCTION__, (int)dest, - (int)get_real_udp_relay_servers_number()); - } - } else { - const size_t dest = id; - if (dest >= get_real_general_relay_servers_number()) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Too large general relay number: %d, total=%d\n", __FUNCTION__, (int)dest, - (int)get_real_general_relay_servers_number()); - } - rs = general_relay_servers[dest]; - if (!rs) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Wrong general relay number: %d, total=%d\n", __FUNCTION__, (int)dest, - (int)get_real_general_relay_servers_number()); - } + const size_t dest = id; + if (dest >= get_real_general_relay_servers_number()) { + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Too large general relay number: %d, total=%d\n", __FUNCTION__, (int)dest, + (int)get_real_general_relay_servers_number()); + } + struct relay_server *rs = general_relay_servers[dest]; + if (!rs) { + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Wrong general relay number: %d, total=%d\n", __FUNCTION__, (int)dest, + (int)get_real_general_relay_servers_number()); } return rs; } @@ -1525,20 +1508,9 @@ void setup_server(void) { allocate_relay_addrs_ports(); setup_barriers(); setup_general_relay_servers(); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Total General servers: %d\n", (int)get_real_general_relay_servers_number()); + TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Total relay threads: %d\n", (int)get_real_general_relay_servers_number()); setup_socket_per_thread_udp_listener_servers(); - - { - int tot = 0; - if (udp_relay_servers[0]) { - tot = get_real_udp_relay_servers_number(); - } - if (tot) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Total UDP servers: %d\n", (int)tot); - } - } - { const int tot = get_real_general_relay_servers_number(); if (tot) { @@ -1574,11 +1546,6 @@ void enable_drain_mode(void) { general_relay_servers[i]->server.is_draining = true; } } - for (size_t i = 0; i < get_real_udp_relay_servers_number(); i++) { - if (udp_relay_servers[i]) { - udp_relay_servers[i]->server.is_draining = true; - } - } turn_params.drain_turn_server = true; } ///////////////////////////////