]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tree-wide: make sure to flush/close all bus connections when our daemons exit
authorLennart Poettering <lennart@poettering.net>
Thu, 17 Jan 2019 14:53:15 +0000 (15:53 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 17 Jan 2019 15:12:38 +0000 (16:12 +0100)
Let's make sure everything is written out ebfore we exit, so that no
messages keep our bus connections referenced.

Fixes: #11462
src/login/logind.c
src/login/user-runtime-dir.c
src/machine/machined.c
src/network/networkd-manager.c
src/portable/portabled.c
src/resolve/resolved-manager.c
src/stdio-bridge/stdio-bridge.c
src/timesync/timesyncd-manager.c

index 8d85de9b43c7d6bb01ca7e14fa4d868a549f0ef9..95ec0a57c600c10214840f68c234495c4b6b39cf 100644 (file)
@@ -146,7 +146,7 @@ static Manager* manager_unref(Manager *m) {
 
         bus_verify_polkit_async_registry_free(m->polkit_registry);
 
-        sd_bus_unref(m->bus);
+        sd_bus_flush_close_unref(m->bus);
         sd_event_unref(m->event);
 
         safe_close(m->reserve_vt_fd);
index 5e58e4baadbf1f02a937d8159adb9ec9de5c8b2f..eb66e18de1c0c3bd685333fd4296d95b2d14c4cd 100644 (file)
@@ -22,7 +22,7 @@
 
 static int acquire_runtime_dir_size(uint64_t *ret) {
         _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
-        _cleanup_(sd_bus_unrefp) sd_bus *bus = NULL;
+        _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
         int r;
 
         r = sd_bus_default_system(&bus);
index 9f23e369a46a29c240355ec790c2c64d05c554a7..0b92b1c6ee238bd822587aeef8ba8519cdc4c72a 100644 (file)
@@ -81,7 +81,7 @@ static Manager* manager_unref(Manager *m) {
 
         bus_verify_polkit_async_registry_free(m->polkit_registry);
 
-        sd_bus_unref(m->bus);
+        sd_bus_flush_close_unref(m->bus);
         sd_event_unref(m->event);
 
         return mfree(m);
index 81c81f18af0253eceae2b8d2496d2e91066fc806..c8d369e2a0f7c2f8051fb1a0b2e2ef75866d9202 100644 (file)
@@ -1456,7 +1456,7 @@ void manager_free(Manager *m) {
 
         sd_device_monitor_unref(m->device_monitor);
 
-        sd_bus_unref(m->bus);
+        sd_bus_flush_close_unref(m->bus);
 
         free(m->dynamic_timezone);
         free(m->dynamic_hostname);
index 63fc34046913c5b9d7a12189c0e75cc4d15eb715..49a359fd3150c3a0f538a2d4555b597d127e7b1c 100644 (file)
@@ -53,7 +53,7 @@ static Manager* manager_unref(Manager *m) {
 
         bus_verify_polkit_async_registry_free(m->polkit_registry);
 
-        sd_bus_unref(m->bus);
+        sd_bus_flush_close_unref(m->bus);
         sd_event_unref(m->event);
 
         return mfree(m);
index b7dc09ae370ac7788d910e60dd1f5f8141c5f263..b3d35c83413f0b11f75e808db5af55594260a5a1 100644 (file)
@@ -689,7 +689,7 @@ Manager *manager_free(Manager *m) {
         manager_mdns_stop(m);
         manager_dns_stub_stop(m);
 
-        sd_bus_unref(m->bus);
+        sd_bus_flush_close_unref(m->bus);
 
         sd_event_source_unref(m->sigusr1_event_source);
         sd_event_source_unref(m->sigusr2_event_source);
index 3a21aa4aed018dc16944f30b7aaba2fe98e51bf1..7060897ab7b5a130d6154aa2ca089f8362271191 100644 (file)
@@ -91,7 +91,7 @@ static int parse_argv(int argc, char *argv[]) {
 }
 
 static int run(int argc, char *argv[]) {
-        _cleanup_(sd_bus_unrefp) sd_bus *a = NULL, *b = NULL;
+        _cleanup_(sd_bus_flush_close_unrefp) sd_bus *a = NULL, *b = NULL;
         sd_id128_t server_id;
         bool is_unix;
         int r, in_fd, out_fd;
index 4b0696f3a3eb2e11f6bd5046a534d540d2d3fa5a..b3bd7235c90973372ea49e72eb57c289b3aa4ed0 100644 (file)
@@ -937,7 +937,7 @@ void manager_free(Manager *m) {
         sd_resolve_unref(m->resolve);
         sd_event_unref(m->event);
 
-        sd_bus_unref(m->bus);
+        sd_bus_flush_close_unref(m->bus);
 
         free(m);
 }