chiark / gitweb /
Merge remote-tracking branch 'origin/master'
authorLennart Poettering <lennart@poettering.net>
Mon, 18 Aug 2014 16:12:55 +0000 (18:12 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 18 Aug 2014 16:12:55 +0000 (18:12 +0200)
1  2 
src/libsystemd/sd-bus/bus-objects.c
src/systemd/sd-bus.h

index 03604091ec32949dc367692b07098ed8e9fb54db,00e8e9655b5d3868791391a41663e35bb2668814..3a2de6520ea9e7c2e1914b8e9fbae458a6d91577
@@@ -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);
  #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 0352d16ce6f9deeae17c638776e294b67502ad21,c601093a85d0ffba3d1cfa3421e127bdd8b5d317..1e23a93a6000c2ea94f79fb5a14d390e14ecc887
@@@ -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);