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;
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();