aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-06-22 00:17:53 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2021-06-22 23:34:34 +0200
commit07c8b7cb2eba48d930ed2419e210c8777be3b88a (patch)
treedfeb563bd69b4b1263238680360c952439a88727
parent435f67f43c4323702b6c59d74017860e6337dd53 (diff)
osmo-msc main: use osmo_select_shutdown()
-rw-r--r--src/osmo-msc/msc_main.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c
index fcca101b6..a0f584db8 100644
--- a/src/osmo-msc/msc_main.c
+++ b/src/osmo-msc/msc_main.c
@@ -776,14 +776,24 @@ TODO: we probably want some of the _net_ ctrl commands from bsc_base_ctrl_cmds_i
}
}
- while (!quit) {
+ do {
log_reset_context();
osmo_select_main_ctx(0);
- }
- msc_network_shutdown(msc_network);
- osmo_signal_dispatch(SS_L_GLOBAL, S_L_GLOBAL_SHUTDOWN, NULL);
- sleep(3);
+ /* If the user hits Ctrl-C the third time, just terminate immediately. */
+ if (quit >= 3)
+ break;
+
+ /* Has SIGTERM been received (and not yet been handled)? */
+ if (quit && !osmo_select_shutdown_requested()) {
+ msc_network_shutdown(msc_network);
+ osmo_signal_dispatch(SS_L_GLOBAL, S_L_GLOBAL_SHUTDOWN, NULL);
+
+ /* Request write-only mode in osmo_select_main_ctx() */
+ osmo_select_shutdown_request();
+ /* continue the main select loop until all write queues are serviced. */
+ }
+ } while (!osmo_select_shutdown_done());
log_fini();