diff options
author | Thomas Haller <thaller@redhat.com> | 2021-08-03 09:59:04 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-08-04 09:41:10 +0200 |
commit | 442428dbbf3df5d372b562344680dedc5a555b86 (patch) | |
tree | 5d2acff006e2441ad9ae2df91b9c5d1ffe0c792b | |
parent | 4dd517ca611bf37c622d79a398f0d95ee02ea539 (diff) | |
download | NetworkManager-442428dbbf3df5d372b562344680dedc5a555b86.tar.gz |
dispatcher: add cancellable for tracking SIGTERM
-rw-r--r-- | src/nm-dispatcher/nm-dispatcher.c | 6 |
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; } |