aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-06-04 16:20:12 +0200
committerneels <nhofmeyr@sysmocom.de>2021-06-23 23:45:52 +0000
commit2644cd2d950679a537fc3a1cf37bceed63507e8f (patch)
tree91a824ebd3c566376833f55c5ca4199c55f160eb /src
parente87f20f621a9c7dbe677da42264a75c31397cbf1 (diff)
use osmo_select_shutdown to get rid of SIGTERM sleep
Diffstat (limited to 'src')
-rw-r--r--src/osmo-bsc/osmo_bsc_main.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c
index 14475ff7e..2a6c50183 100644
--- a/src/osmo-bsc/osmo_bsc_main.c
+++ b/src/osmo-bsc/osmo_bsc_main.c
@@ -697,10 +697,12 @@ static void signal_handler(int signum)
switch (signum) {
case SIGINT:
case SIGTERM:
+ /* If SIGTERM was already sent before, just terminate immediately. */
+ if (osmo_select_shutdown_requested())
+ exit(-1);
bsc_shutdown_net(bsc_gsmnet);
osmo_signal_dispatch(SS_L_GLOBAL, S_L_GLOBAL_SHUTDOWN, NULL);
- sleep(3);
- exit(0);
+ osmo_select_shutdown_request();
break;
case SIGABRT:
/* in case of abort, we want to obtain a talloc report and
@@ -1033,7 +1035,7 @@ int main(int argc, char **argv)
}
}
- while (1) {
+ while (!osmo_select_shutdown_done()) {
osmo_select_main_ctx(0);
}