From: Lennart Poettering Date: Mon, 18 Aug 2014 16:12:55 +0000 (+0200) Subject: Merge remote-tracking branch 'origin/master' X-Git-Tag: v216~61 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=630a4d9ea7298fb4a494662cbb4871069143ff56;hp=-c Merge remote-tracking branch 'origin/master' --- 630a4d9ea7298fb4a494662cbb4871069143ff56 diff --combined src/libsystemd/sd-bus/bus-objects.c index 03604091e,00e8e9655..3a2de6520 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@@ -51,9 -51,7 +51,9 @@@ static int node_vtable_get_userdata u = s->userdata; if (c->find) { bus->current_slot = sd_bus_slot_ref(s); + bus->current_userdata = u; r = c->find(bus, path, c->interface, u, &u, error); + bus->current_userdata = NULL; bus->current_slot = sd_bus_slot_unref(s); if (r < 0) @@@ -125,9 -123,7 +125,9 @@@ static int add_enumerated_to_set slot = container_of(c, sd_bus_slot, node_enumerator); bus->current_slot = sd_bus_slot_ref(slot); + bus->current_userdata = slot->userdata; r = c->callback(bus, prefix, slot->userdata, &children, error); + bus->current_userdata = NULL; bus->current_slot = sd_bus_slot_unref(slot); if (r < 0) @@@ -277,11 -273,7 +277,11 @@@ static int node_callbacks_run slot = container_of(c, sd_bus_slot, node_callback); bus->current_slot = sd_bus_slot_ref(slot); + bus->current_handler = c->callback; + bus->current_userdata = slot->userdata; r = c->callback(bus, m, slot->userdata, &error_buffer); + bus->current_userdata = NULL; + bus->current_handler = NULL; bus->current_slot = sd_bus_slot_unref(slot); r = bus_maybe_reply_error(m, r, &error_buffer); @@@ -295,7 -287,6 +295,6 @@@ #define CAPABILITY_SHIFT(x) (((x) >> __builtin_ctzll(_SD_BUS_VTABLE_CAPABILITY_MASK)) & 0xFFFF) static int check_access(sd_bus *bus, sd_bus_message *m, struct vtable_member *c, sd_bus_error *error) { - _cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL; uint64_t cap; int r; @@@ -396,11 -387,7 +395,11 @@@ static int method_callbacks_run slot = container_of(c->parent, sd_bus_slot, node_vtable); bus->current_slot = sd_bus_slot_ref(slot); + bus->current_handler = c->vtable->x.method.handler; + bus->current_userdata = u; r = c->vtable->x.method.handler(bus, m, u, &error); + bus->current_userdata = NULL; + bus->current_handler = NULL; bus->current_slot = sd_bus_slot_unref(slot); return bus_maybe_reply_error(m, r, &error); @@@ -439,9 -426,7 +438,9 @@@ static int invoke_property_get if (v->x.property.get) { bus->current_slot = sd_bus_slot_ref(slot); + bus->current_userdata = userdata; r = v->x.property.get(bus, path, interface, property, reply, userdata, error); + bus->current_userdata = NULL; bus->current_slot = sd_bus_slot_unref(slot); if (r < 0) @@@ -503,9 -488,7 +502,9 @@@ static int invoke_property_set if (v->x.property.set) { bus->current_slot = sd_bus_slot_ref(slot); + bus->current_userdata = userdata; r = v->x.property.set(bus, path, interface, property, value, userdata, error); + bus->current_userdata = NULL; bus->current_slot = sd_bus_slot_unref(slot); if (r < 0) diff --combined src/systemd/sd-bus.h index 0352d16ce,c601093a8..1e23a93a6 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@@ -28,7 -28,7 +28,7 @@@ #include "sd-id128.h" #include "sd-event.h" - #include "sd-memfd.h" + #include "memfd.h" #include "_sd-common.h" _SD_BEGIN_DECLARATIONS; @@@ -148,10 -148,8 +148,10 @@@ int sd_bus_process(sd_bus *bus, sd_bus_ int sd_bus_process_priority(sd_bus *bus, int64_t max_priority, sd_bus_message **r); int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec); int sd_bus_flush(sd_bus *bus); -sd_bus_message* sd_bus_get_current_message(sd_bus *bus); sd_bus_slot* sd_bus_get_current_slot(sd_bus *bus); +sd_bus_message* sd_bus_get_current_message(sd_bus *bus); +sd_bus_message_handler_t sd_bus_get_current_handler(sd_bus *bus); +void* sd_bus_get_current_userdata(sd_bus *bus); int sd_bus_attach_event(sd_bus *bus, sd_event *e, int priority); int sd_bus_detach_event(sd_bus *bus); @@@ -177,8 -175,6 +177,8 @@@ void *sd_bus_slot_get_userdata(sd_bus_s void *sd_bus_slot_set_userdata(sd_bus_slot *slot, void *userdata); sd_bus_message* sd_bus_slot_get_current_message(sd_bus_slot *slot); +sd_bus_message_handler_t sd_bus_slot_get_current_handler(sd_bus_slot *bus); +void *sd_bus_slot_get_current_userdata(sd_bus_slot *slot); /* Message object */ @@@ -230,10 -226,10 +230,10 @@@ int sd_bus_message_append_basic(sd_bus_ int sd_bus_message_append_array(sd_bus_message *m, char type, const void *ptr, size_t size); int sd_bus_message_append_array_space(sd_bus_message *m, char type, size_t size, void **ptr); int sd_bus_message_append_array_iovec(sd_bus_message *m, char type, const struct iovec *iov, unsigned n); - int sd_bus_message_append_array_memfd(sd_bus_message *m, char type, sd_memfd *memfd); + int sd_bus_message_append_array_memfd(sd_bus_message *m, char type, int memfd); int sd_bus_message_append_string_space(sd_bus_message *m, size_t size, char **s); int sd_bus_message_append_string_iovec(sd_bus_message *m, const struct iovec *iov, unsigned n); - int sd_bus_message_append_string_memfd(sd_bus_message *m, sd_memfd* memfd); + int sd_bus_message_append_string_memfd(sd_bus_message *m, int memfd); int sd_bus_message_append_strv(sd_bus_message *m, char **l); int sd_bus_message_open_container(sd_bus_message *m, char type, const char *contents); int sd_bus_message_close_container(sd_bus_message *m);