From 5745292ccad88791da6363755bd3d1e2e2103ef8 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 4 Dec 2009 20:51:19 -0600 Subject: Don't generate multiple g_sources, 1 is enough --- src/main.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index fd8fd1db..c7ed0485 100644 --- a/src/main.c +++ b/src/main.c @@ -51,6 +51,7 @@ static gboolean quit_eventloop(gpointer user_data) static gboolean signal_cb(GIOChannel *channel, GIOCondition cond, gpointer data) { + static int terminated = 0; int signal_fd = GPOINTER_TO_INT(data); struct signalfd_siginfo si; ssize_t res; @@ -65,9 +66,13 @@ static gboolean signal_cb(GIOChannel *channel, GIOCondition cond, gpointer data) switch (si.ssi_signo) { case SIGINT: case SIGTERM: - g_timeout_add_seconds(SHUTDOWN_GRACE_SECONDS, - quit_eventloop, NULL); - __ofono_modem_shutdown(); + if (terminated == 0) { + g_timeout_add_seconds(SHUTDOWN_GRACE_SECONDS, + quit_eventloop, NULL); + __ofono_modem_shutdown(); + } + + terminated++; break; case SIGUSR2: __ofono_toggle_debug(); -- cgit v1.2.3