summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-08-03 09:59:04 +0200
committerThomas Haller <thaller@redhat.com>2021-08-04 09:41:10 +0200
commit442428dbbf3df5d372b562344680dedc5a555b86 (patch)
tree5d2acff006e2441ad9ae2df91b9c5d1ffe0c792b
parent4dd517ca611bf37c622d79a398f0d95ee02ea539 (diff)
downloadNetworkManager-442428dbbf3df5d372b562344680dedc5a555b86.tar.gz
dispatcher: add cancellable for tracking SIGTERM
-rw-r--r--src/nm-dispatcher/nm-dispatcher.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nm-dispatcher/nm-dispatcher.c b/src/nm-dispatcher/nm-dispatcher.c
index 843820f6f1..e160d6c94f 100644
--- a/src/nm-dispatcher/nm-dispatcher.c
+++ b/src/nm-dispatcher/nm-dispatcher.c
@@ -26,6 +26,7 @@ typedef struct Request Request;
static struct {
GDBusConnection *dbus_connection;
+ GCancellable * quit_cancellable;
gboolean debug;
gboolean persist;
GSource * quit_source;
@@ -963,6 +964,7 @@ signal_handler(gpointer user_data)
_LOG_X_I("Caught signal %d, shutting down...", signo);
gl.shutdown_quitting = TRUE;
+ g_cancellable_cancel(gl.quit_cancellable);
return G_SOURCE_CONTINUE;
}
@@ -1000,6 +1002,8 @@ main(int argc, char **argv)
source_term = nm_g_unix_signal_add_source(SIGTERM, signal_handler, GINT_TO_POINTER(SIGTERM));
source_int = nm_g_unix_signal_add_source(SIGINT, signal_handler, GINT_TO_POINTER(SIGINT));
+ gl.quit_cancellable = g_cancellable_new();
+
if (!parse_command_line(&argc, &argv, &error)) {
_LOG_X_W("Error parsing command line arguments: %s", error->message);
gl.exit_with_failure = TRUE;
@@ -1094,5 +1098,7 @@ done:
nm_clear_g_source_inst(&source_term);
nm_clear_g_source_inst(&source_int);
+ g_clear_object(&gl.quit_cancellable);
+
return gl.exit_with_failure ? 1 : 0;
}