dbus: split up bus_done() into seperate functions
No functional changes, but let's make this a bit more finegrained. (The individual functions are exported, which is used in a later commit)
This commit is contained in:
+28
-11
@@ -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);
|
||||
|
||||
if (m->private_listen_event_source)
|
||||
m->private_listen_event_source = sd_event_source_unref(m->private_listen_event_source);
|
||||
|
||||
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);
|
||||
|
||||
bus_done_api(m);
|
||||
bus_done_system(m);
|
||||
bus_done_private(m);
|
||||
|
||||
assert(!m->subscribed);
|
||||
|
||||
m->deserialized_subscribed = strv_free(m->deserialized_subscribed);
|
||||
bus_verify_polkit_async_registry_free(m->polkit_registry);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user