From d841bec8d26615df776fc6573157c9532f226aff Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Tue, 21 Dec 2021 19:17:51 +0100 Subject: [PATCH] select_main: don't poll forever during shutdown Do not poll without timeout during shutdown if no timers are pending. Change-Id: I81c64a7ae440304522c2179c212023a566ddced8 --- src/select.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/select.c b/src/select.c index b48d13e76..ddff13297 100644 --- a/src/select.c +++ b/src/select.c @@ -372,14 +372,20 @@ static int _osmo_select_main(int polling) { unsigned int n_poll; int rc; + int timeout = 0; /* prepare read and write fdsets */ n_poll = poll_fill_fds(); - if (!polling) + if (!polling) { osmo_timers_prepare(); + timeout = osmo_timers_nearest_ms(); - rc = poll(g_poll.poll, n_poll, polling ? 0 : osmo_timers_nearest_ms()); + if (_osmo_select_shutdown_requested && timeout == -1) + timeout = 0; + } + + rc = poll(g_poll.poll, n_poll, timeout); if (rc < 0) return 0;