1
0
mirror of https://github.com/coturn/coturn.git synced 2026-05-05 18:56:09 +02:00

Drop udp_relay_servers_number config and clean up dead UDP id-space (#1874)

## 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
This commit is contained in:
Pavel Punsky 2026-04-19 19:37:52 -07:00 committed by GitHub
parent c8b3dd6513
commit c1518d5f2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 50 deletions

View File

@ -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) {

View File

@ -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 /////////////////////////////////////

View File

@ -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;

View File

@ -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;
}
///////////////////////////////