From 772873104658182a5b76f5c0eed76047c62c6651 Mon Sep 17 00:00:00 2001 From: Dirk Engling Date: Wed, 28 Oct 2026 23:31:07 +0100 Subject: With more workers blockingly waiting on udp sockets, we need to keep track of all sockets to shut them down on exit --- opentracker.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'opentracker.c') diff --git a/opentracker.c b/opentracker.c index f579b92..ab4a934 100644 --- a/opentracker.c +++ b/opentracker.c @@ -397,7 +397,6 @@ static void listen_start_udp_workers(void) { if (entry->proto != FLAG_UDP || entry->workers <= 0) continue; - socket_set_blocking((int)entry->sock, 1); event_del((int)entry->sock); udp_worker_install(entry->sock); @@ -409,8 +408,7 @@ static void listen_start_udp_workers(void) { if (sock == -1) { fprintf(stderr, "Warning: could not bind another socket for udp worker %d: %s. Sharing the first instead.\n", worker, strerror(errno)); sock = entry->sock; - } else - socket_set_blocking((int)sock, 1); + } } udp_worker_install(sock); } @@ -548,9 +546,10 @@ int main(int argc, char **argv) { listen_start_udp_workers(); server_mainloop(0); + udp_workers_deinit(); - /* The loop has left, so no thread is serving any more and the teardown - can run where a debugger and the sanitizers can follow it */ + /* No thread is serving any more, so the teardown can run where a debugger + and the sanitizers can follow it */ trackerlogic_deinit(); #ifdef WANT_SYSLOGS closelog(); -- cgit v1.3