]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dbus: split up bus_done() into seperate functions
authorLennart Poettering <lennart@poettering.net>
Wed, 7 Feb 2018 14:00:32 +0000 (15:00 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 12 Feb 2018 10:34:00 +0000 (11:34 +0100)
No functional changes, but let's make this a bit more finegrained.

(The individual functions are exported, which is used in a later commit)

src/core/dbus.c
src/core/dbus.h

index 1c3fca353ab7eb344fb6a137a5e0f58059be8e1b..c46c2992073377d98233190f1b5543a9746f8b60 100644 (file)
@@ -139,9 +139,10 @@ static int signal_disconnected(sd_bus_message *message, void *userdata, sd_bus_e
         assert_se(bus = sd_bus_message_get_bus(message));
 
         if (bus == m->api_bus)
-                destroy_bus(m, &m->api_bus);
+                bus_done_api(m);
         if (bus == m->system_bus)
-                destroy_bus(m, &m->system_bus);
+                bus_done_system(m);
+
         if (set_remove(m->private_buses, bus)) {
                 log_debug("Got disconnect on private connection.");
                 destroy_bus(m, &bus);
@@ -1077,28 +1078,44 @@ static void destroy_bus(Manager *m, sd_bus **bus) {
         *bus = sd_bus_unref(*bus);
 }
 
-void bus_done(Manager *m) {
-        sd_bus *b;
-
+void bus_done_api(Manager *m) {
         assert(m);
 
         if (m->api_bus)
                 destroy_bus(m, &m->api_bus);
+}
+
+void bus_done_system(Manager *m) {
+        assert(m);
+
         if (m->system_bus)
                 destroy_bus(m, &m->system_bus);
+}
+
+void bus_done_private(Manager *m) {
+        sd_bus *b;
+
+        assert(m);
+
         while ((b = set_steal_first(m->private_buses)))
                 destroy_bus(m, &b);
 
         m->private_buses = set_free(m->private_buses);
 
-        m->subscribed = sd_bus_track_unref(m->subscribed);
-        m->deserialized_subscribed = strv_free(m->deserialized_subscribed);
+        m->private_listen_event_source = sd_event_source_unref(m->private_listen_event_source);
+        m->private_listen_fd = safe_close(m->private_listen_fd);
+}
+
+void bus_done(Manager *m) {
+        assert(m);
 
-        if (m->private_listen_event_source)
-                m->private_listen_event_source = sd_event_source_unref(m->private_listen_event_source);
+        bus_done_api(m);
+        bus_done_system(m);
+        bus_done_private(m);
 
-        m->private_listen_fd = safe_close(m->private_listen_fd);
+        assert(!m->subscribed);
 
+        m->deserialized_subscribed = strv_free(m->deserialized_subscribed);
         bus_verify_polkit_async_registry_free(m->polkit_registry);
 }
 
index fe50fdd5f76a799cd35dc35df10c115679cb1de5..17dfbc9f97f28d6b952749ee2bbec2c4a5c8c089 100644 (file)
 int bus_send_queued_message(Manager *m);
 
 int bus_init(Manager *m, bool try_bus_connect);
+
+void bus_done_private(Manager *m);
+void bus_done_api(Manager *m);
+void bus_done_system(Manager *m);
 void bus_done(Manager *m);
 
 int bus_fdset_add_all(Manager *m, FDSet *fds);