diff options
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/src/bsc_msc_ip.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/openbsc/src/bsc_msc_ip.c b/openbsc/src/bsc_msc_ip.c index 33be59439..c44ddaf8f 100644 --- a/openbsc/src/bsc_msc_ip.c +++ b/openbsc/src/bsc_msc_ip.c @@ -974,7 +974,7 @@ static void signal_handler(int signal) talloc_report_full(tall_bsc_ctx, stderr); break; case SIGUSR2: - if (!msc_con->is_connected) + if (!msc_con || !msc_con->is_connected) return; bsc_msc_lost(msc_con); break; @@ -1047,6 +1047,12 @@ int main(int argc, char **argv) /* seed the PRNG */ srand(time(NULL)); + signal(SIGINT, &signal_handler); + signal(SIGABRT, &signal_handler); + signal(SIGUSR1, &signal_handler); + signal(SIGUSR2, &signal_handler); + signal(SIGPIPE, SIG_IGN); + /* attempt to register the local mgcp forward */ if (mgcp_create_port() != 0) { fprintf(stderr, "Failed to bind local MGCP port\n"); @@ -1075,12 +1081,6 @@ int main(int argc, char **argv) bsc_msc_connect(msc_con); - signal(SIGINT, &signal_handler); - signal(SIGABRT, &signal_handler); - signal(SIGUSR1, &signal_handler); - signal(SIGUSR2, &signal_handler); - signal(SIGPIPE, SIG_IGN); - while (1) { bsc_select_main(0); } |