dbus/backport-bus-Also-tell-systemd-before-we-shut-down.patch
licunlong 10e71fd5ca Tell systemd when dbus is ready/shutting down/reloading config
(cherry picked from commit ac18e08d6959d479e839f40f26232a359e5a36fc)
2022-01-30 09:27:31 +08:00

76 lines
2.3 KiB
Diff

From 03c0db9ff51dedeb98f42c715a70a1bd10c7f595 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Mon, 15 Jan 2018 15:31:55 +0000
Subject: [PATCH] bus: Also tell systemd before we shut down
Signed-off-by: Simon McVittie <smcv@collabora.com>
Reviewed-by: Philip Withnall <withnall@endlessm.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=104641
---
bus/main.c | 1 +
dbus/dbus-sysdeps-util-unix.c | 12 ++++++++++++
dbus/dbus-sysdeps-util-win.c | 5 +++++
dbus/dbus-sysdeps.h | 1 +
4 files changed, 19 insertions(+)
diff --git a/bus/main.c b/bus/main.c
index 578aa989..28223899 100644
--- a/bus/main.c
+++ b/bus/main.c
@@ -320,6 +320,7 @@ handle_reload_watch (DBusWatch *watch,
loop = bus_context_get_loop (context);
if (loop != NULL)
{
+ _dbus_daemon_report_stopping ();
_dbus_loop_quit (loop);
}
}
diff --git a/dbus/dbus-sysdeps-util-unix.c b/dbus/dbus-sysdeps-util-unix.c
index 8a7c9278..24eba4e3 100644
--- a/dbus/dbus-sysdeps-util-unix.c
+++ b/dbus/dbus-sysdeps-util-unix.c
@@ -1556,3 +1556,15 @@ _dbus_daemon_report_reloaded (void)
_dbus_daemon_report_ready ();
#endif
}
+
+/**
+ * Report to a service manager that the daemon calling this function is
+ * shutting down. This is currently only implemented for systemd.
+ */
+void
+_dbus_daemon_report_stopping (void)
+{
+#ifdef HAVE_SYSTEMD
+ sd_notify (0, "STOPPING=1");
+#endif
+}
diff --git a/dbus/dbus-sysdeps-util-win.c b/dbus/dbus-sysdeps-util-win.c
index 917dd05e..a5c3bba6 100644
--- a/dbus/dbus-sysdeps-util-win.c
+++ b/dbus/dbus-sysdeps-util-win.c
@@ -1669,3 +1669,8 @@ void
_dbus_daemon_report_reloaded (void)
{
}
+
+void
+_dbus_daemon_report_stopping (void)
+{
+}
diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h
index d8e69589..0d1ff7c4 100644
--- a/dbus/dbus-sysdeps.h
+++ b/dbus/dbus-sysdeps.h
@@ -690,6 +690,7 @@ void _dbus_rlimit_free (DBusRLimit *lim);
void _dbus_daemon_report_ready (void);
void _dbus_daemon_report_reloading (void);
void _dbus_daemon_report_reloaded (void);
+void _dbus_daemon_report_stopping (void);
/** @} */
--
2.27.0