From b36b99b96e4b90f8f1c4507172d423745b7465e1 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 28 Apr 2016 12:48:14 +0200 Subject: hlr: install signal handlers for SIGINT/USR1/HUP --- osmo-gsup-hlr/src/hlr.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/osmo-gsup-hlr/src/hlr.c b/osmo-gsup-hlr/src/hlr.c index be0e96e..2a93d7d 100644 --- a/osmo-gsup-hlr/src/hlr.c +++ b/osmo-gsup-hlr/src/hlr.c @@ -1,3 +1,5 @@ +#include + #include #include #include @@ -66,12 +68,31 @@ static int read_cb(struct osmo_gsup_conn *conn, struct msgb *msg) return 0; } +static struct osmo_gsup_server *gs; + +static void signal_hdlr(int signal) +{ + switch (signal) { + case SIGINT: + LOGP(DMAIN, LOGL_NOTICE, "Terminating due to SIGINT\n"); + osmo_gsup_server_destroy(gs); + db_close(g_dbc); + log_fini(); + exit(0); + break; + case SIGUSR1: + LOGP(DMAIN, LOGL_DEBUG, "Talloc Report due to SIGUSR1\n"); + talloc_report_full(NULL, stderr); + break; + } +} int main(int argc, char **argv) { - struct osmo_gsup_server *gs; int rc; + talloc_enable_leak_report_full(); + rc = osmo_init_logging(&hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); @@ -97,6 +118,12 @@ int main(int argc, char **argv) exit(1); } + osmo_init_ignore_signals(); + signal(SIGINT, &signal_hdlr); + signal(SIGUSR1, &signal_hdlr); + + //osmo_daemonize(); + while (1) { osmo_select_main(0); } -- cgit v1.2.3