aboutsummaryrefslogtreecommitdiffstats
path: root/src
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
commitaabae9e7ca716bd0c758964da11e3f1677237bba (patch)
treee990f9f9d52665360aa2c26449dd1f0b599700cc /src
parentf2d96dad3b1d3dbf94c517721fc18a472da0aabb (diff)
hlr: install signal handlers for SIGINT/USR1/HUP
Diffstat (limited to 'src')
-rw-r--r--src/hlr.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/hlr.c b/src/hlr.c
index be0e96e..2a93d7d 100644
--- a/src/hlr.c
+++ b/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);
}