X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-bus%2Fbus-util.c;h=52d4ebe6112f919ce4572a0ae08bc4f47756f50a;hb=a8ba6cd15d3a5edf1f9fbb4fd08dc428c3939072;hp=29520f95d217ab42597aa0cf9b2bd507a70617db;hpb=d8f52ed25a9edce75fda5251c977b7898e33887e;p=elogind.git diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c index 29520f95d..52d4ebe61 100644 --- a/src/libsystemd/sd-bus/bus-util.c +++ b/src/libsystemd/sd-bus/bus-util.c @@ -123,7 +123,7 @@ int bus_event_loop_with_idle( if (r < 0) return r; - if (r == 0 && !exiting) { + if (r == 0 && !exiting && idle) { r = sd_bus_try_close(bus); if (r == -EBUSY) @@ -1371,8 +1371,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen if (STR_IN_SET(field, "CPUAccounting", "MemoryAccounting", "BlockIOAccounting", - "SendSIGHUP", "SendSIGKILL", - "WakeSystem")) { + "SendSIGHUP", "SendSIGKILL", "WakeSystem", "DefaultDependencies")) { r = parse_boolean(eq); if (r < 0) { @@ -1638,13 +1637,21 @@ int bus_wait_for_jobs_new(sd_bus *bus, BusWaitForJobs **ret) { d->bus = sd_bus_ref(bus); + /* When we are a bus client we match by sender. Direct + * connections OTOH have no initialized sender field, and + * hence we ignore the sender then */ r = sd_bus_add_match( bus, &d->slot_job_removed, + bus->bus_client ? "type='signal'," "sender='org.freedesktop.systemd1'," "interface='org.freedesktop.systemd1.Manager'," "member='JobRemoved'," + "path='/org/freedesktop/systemd1'" : + "type='signal'," + "interface='org.freedesktop.systemd1.Manager'," + "member='JobRemoved'," "path='/org/freedesktop/systemd1'", match_job_removed, d); if (r < 0) @@ -1752,6 +1759,7 @@ int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet) { if (q < 0 && r == 0) r = q; + errno = 0; log_debug_errno(q, "Got result %s/%m for job %s", strna(d->result), strna(d->name)); }