diff options
author | Harald Welte <laforge@gnumonks.org> | 2016-04-28 12:48:14 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-04-28 12:48:14 +0200 |
commit | aabae9e7ca716bd0c758964da11e3f1677237bba (patch) | |
tree | e990f9f9d52665360aa2c26449dd1f0b599700cc /src/hlr.c | |
parent | f2d96dad3b1d3dbf94c517721fc18a472da0aabb (diff) |
hlr: install signal handlers for SIGINT/USR1/HUP
Diffstat (limited to 'src/hlr.c')
-rw-r--r-- | src/hlr.c | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -1,3 +1,5 @@ +#include <signal.h> + #include <osmocom/core/msgb.h> #include <osmocom/core/logging.h> #include <osmocom/core/application.h> @@ -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); } |