X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fdbus-client-track.c;h=07dfea49e63d11e517659ed99c46ccdceddcff11;hb=ea18a4b57e2bb94af7b3ecb7abdaec40e9f485f0;hp=ce514b577c5a14ac712cb2cfd347f0bd40235ea6;hpb=718db96199eb307751264e4163555662c9a389fa;p=elogind.git diff --git a/src/core/dbus-client-track.c b/src/core/dbus-client-track.c index ce514b577..07dfea49e 100644 --- a/src/core/dbus-client-track.c +++ b/src/core/dbus-client-track.c @@ -19,12 +19,13 @@ along with systemd; If not, see . ***/ +#include "bus-util.h" #include "dbus-client-track.h" -static unsigned tracked_client_hash(const void *a) { +static unsigned long tracked_client_hash(const void *a, const uint8_t hash_key[HASH_KEY_SIZE]) { const BusTrackedClient *x = a; - return string_hash_func(x->name) ^ PTR_TO_UINT(x->bus); + return string_hash_func(x->name, hash_key) ^ trivial_hash_func(x->bus, hash_key); } static int tracked_client_compare(const void *a, const void *b) { @@ -43,7 +44,7 @@ static int tracked_client_compare(const void *a, const void *b) { return 0; } -static int on_name_owner_changed(sd_bus *bus, sd_bus_message *message, void *userdata) { +static int on_name_owner_changed(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { BusTrackedClient *c = userdata; const char *name, *old, *new; int r; @@ -53,8 +54,8 @@ static int on_name_owner_changed(sd_bus *bus, sd_bus_message *message, void *use r = sd_bus_message_read(message, "sss", &name, &old, &new); if (r < 0) { - log_debug("Failed to parse NameOwnerChanged message."); - return 0; + bus_log_parse_error(r); + return r; } bus_client_untrack(c->set, bus, name); @@ -201,9 +202,9 @@ void bus_client_track_serialize(Manager *m, FILE *f, Set *s) { SET_FOREACH(c, s, i) { if (c->bus == m->api_bus) - fprintf(f, "subscribed=%s", isempty(c->name) ? "*" : c->name); + fprintf(f, "subscribed=%s\n", isempty(c->name) ? "*" : c->name); else - fprintf(f, "subscribed=%p %s", c->bus, isempty(c->name) ? "*" : c->name); + fprintf(f, "subscribed=%p %s\n", c->bus, isempty(c->name) ? "*" : c->name); } }