X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-bus%2Fbus-slot.c;h=8060e9882cccd9429945eb1f62ce606abe7d2cb6;hb=1797280193ea25a91cc38332c7cee34ba01e7808;hp=d6793c29e96f526e86ea8345b5edbf9c6f25928d;hpb=630a4d9ea7298fb4a494662cbb4871069143ff56;p=elogind.git diff --git a/src/libsystemd/sd-bus/bus-slot.c b/src/libsystemd/sd-bus/bus-slot.c index d6793c29e..8060e9882 100644 --- a/src/libsystemd/sd-bus/bus-slot.c +++ b/src/libsystemd/sd-bus/bus-slot.c @@ -75,7 +75,7 @@ void bus_slot_disconnect(sd_bus_slot *slot) { case BUS_REPLY_CALLBACK: if (slot->reply_callback.cookie != 0) - hashmap_remove(slot->bus->reply_callbacks, &slot->reply_callback.cookie); + ordered_hashmap_remove(slot->bus->reply_callbacks, &slot->reply_callback.cookie); if (slot->reply_callback.timeout != 0) prioq_remove(slot->bus->reply_callbacks_prioq, &slot->reply_callback, &slot->reply_callback.prioq_idx); @@ -208,6 +208,7 @@ _public_ sd_bus_slot* sd_bus_slot_unref(sd_bus_slot *slot) { } bus_slot_disconnect(slot); + free(slot->description); free(slot); return NULL; @@ -265,3 +266,18 @@ _public_ void* sd_bus_slot_get_current_userdata(sd_bus_slot *slot) { return slot->bus->current_userdata; } + +_public_ int sd_bus_slot_set_description(sd_bus_slot *slot, const char *description) { + assert_return(slot, -EINVAL); + + return free_and_strdup(&slot->description, description); +} + +_public_ int sd_bus_slot_get_description(sd_bus_slot *slot, char **description) { + assert_return(slot, -EINVAL); + assert_return(description, -EINVAL); + assert_return(slot->description, -ENXIO); + + *description = slot->description; + return 0; +}