diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-06-22 00:17:53 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2021-06-22 23:34:34 +0200 |
commit | 07c8b7cb2eba48d930ed2419e210c8777be3b88a (patch) | |
tree | dfeb563bd69b4b1263238680360c952439a88727 | |
parent | 435f67f43c4323702b6c59d74017860e6337dd53 (diff) |
osmo-msc main: use osmo_select_shutdown()
Change-Id: I75f4637c051ed44628e65dab1bdbbf28dcc9626f
-rw-r--r-- | src/osmo-msc/msc_main.c | 20 |
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(); |