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);
*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);
}
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);