summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-04-28 12:48:14 +0200
committerHarald Welte <laforge@gnumonks.org>2016-04-28 12:48:14 +0200
commitb36b99b96e4b90f8f1c4507172d423745b7465e1 (patch)
tree5eca994f004e20895886c2daca5e56441d76393f
parent3e8427dc2b97ce04d90b32776d1ee35b84da828d (diff)
hlr: install signal handlers for SIGINT/USR1/HUP
-rw-r--r--osmo-gsup-hlr/src/hlr.c29
1 files changed, 28 insertions, 1 deletions
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 <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);
}