X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-bus%2Fsd-bus.c;h=427d53061c58391d29792265a278c5f65aa36af1;hb=151b9b9662a90455262ce575a8a8ae74bf4ff336;hp=4fdc246b7e1a1948638cd51cd0654f7bf94f526d;hpb=f389bf15d0b732027669690ed9606a96c0568bbd;p=elogind.git diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 4fdc246b7..427d53061 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -132,6 +132,9 @@ static void bus_free(sd_bus *b) { sd_bus_detach_event(b); + if (b->default_bus_ptr) + *b->default_bus_ptr = NULL; + bus_close_fds(b); if (b->kdbus_buffer) @@ -396,11 +399,11 @@ static int bus_send_hello(sd_bus *bus) { r = sd_bus_message_new_method_call( bus, + &m, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", - "Hello", - &m); + "Hello"); if (r < 0) return r; @@ -1211,7 +1214,7 @@ fail: return r; } -_public_ int sd_bus_open_system_remote(const char *host, sd_bus **ret) { +_public_ int sd_bus_open_system_remote(sd_bus **ret, const char *host) { _cleanup_free_ char *e = NULL; char *p = NULL; sd_bus *bus; @@ -1247,7 +1250,7 @@ _public_ int sd_bus_open_system_remote(const char *host, sd_bus **ret) { return 0; } -_public_ int sd_bus_open_system_container(const char *machine, sd_bus **ret) { +_public_ int sd_bus_open_system_container(sd_bus **ret, const char *machine) { _cleanup_free_ char *e = NULL; sd_bus *bus; char *p; @@ -1362,7 +1365,8 @@ _public_ sd_bus *sd_bus_unref(sd_bus *bus) { * the messages and thus implicitly also kill our own * last references */ - bus_reset_queues(bus); + if (q) + bus_reset_queues(bus); } i = REFCNT_DEC(bus->n_ref); @@ -2380,10 +2384,10 @@ static int process_closing(sd_bus *bus, sd_bus_message **ret) { /* Then, synthesize a Disconnected message */ r = sd_bus_message_new_signal( bus, + &m, "/org/freedesktop/DBus/Local", "org.freedesktop.DBus.Local", - "Disconnected", - &m); + "Disconnected"); if (r < 0) return r; @@ -2817,7 +2821,7 @@ static int attach_io_events(sd_bus *bus) { return 0; if (!bus->input_io_event_source) { - r = sd_event_add_io(bus->event, bus->input_fd, 0, io_callback, bus, &bus->input_io_event_source); + r = sd_event_add_io(bus->event, &bus->input_io_event_source, bus->input_fd, 0, io_callback, bus); if (r < 0) return r; @@ -2836,7 +2840,7 @@ static int attach_io_events(sd_bus *bus) { assert(bus->output_fd >= 0); if (!bus->output_io_event_source) { - r = sd_event_add_io(bus->event, bus->output_fd, 0, io_callback, bus, &bus->output_io_event_source); + r = sd_event_add_io(bus->event, &bus->output_io_event_source, bus->output_fd, 0, io_callback, bus); if (r < 0) return r; @@ -2885,7 +2889,7 @@ _public_ int sd_bus_attach_event(sd_bus *bus, sd_event *event, int priority) { bus->event_priority = priority; - r = sd_event_add_monotonic(bus->event, 0, 0, time_callback, bus, &bus->time_event_source); + r = sd_event_add_monotonic(bus->event, &bus->time_event_source, 0, 0, time_callback, bus); if (r < 0) goto fail; @@ -2893,7 +2897,7 @@ _public_ int sd_bus_attach_event(sd_bus *bus, sd_event *event, int priority) { if (r < 0) goto fail; - r = sd_event_add_exit(bus->event, quit_callback, bus, &bus->quit_event_source); + r = sd_event_add_exit(bus->event, &bus->quit_event_source, quit_callback, bus); if (r < 0) goto fail;