select_main: don't poll forever during shutdown
Do not poll without timeout during shutdown if no timers are pending.
Change-Id: I81c64a7ae440304522c2179c212023a566ddced8
diff --git a/src/select.c b/src/select.c
index b48d13e..ddff132 100644
--- a/src/select.c
+++ b/src/select.c
@@ -372,14 +372,20 @@
{
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;