bus: don't skip interfaces in bus_message_map_properties_changed()

Skipping interfaces randomly without the caller specifying it is nasty.
Avoid this and let the caller do that themselves.
This commit is contained in:
David Herrmann 2014-08-28 15:24:00 +02:00
parent c168eb6785
commit 427c71629e
2 changed files with 11 additions and 7 deletions

View file

@ -317,11 +317,14 @@ static int kbdctx_locale_props_changed_fn(sd_bus *bus,
kc->slot_locale_get_all = sd_bus_slot_unref(kc->slot_locale_get_all);
/* skip interface name */
r = sd_bus_message_skip(signal, "s");
if (r < 0)
goto error;
r = bus_message_map_properties_changed(bus, signal, kbdctx_locale_map, kc);
if (r < 0) {
log_debug("idev-keyboard: cannot handle PropertiesChanged from locale1: %s", strerror(-r));
return r;
}
if (r < 0)
goto error;
if (r > 0) {
r = kbdctx_query_locale(kc);
@ -331,6 +334,10 @@ static int kbdctx_locale_props_changed_fn(sd_bus *bus,
kbdctx_refresh_keymap(kc);
return 0;
error:
log_debug("idev-keyboard: cannot handle PropertiesChanged from locale1: %s", strerror(-r));
return r;
}
static int kbdctx_setup_bus(kbdctx *kc) {

View file

@ -1051,9 +1051,6 @@ int bus_message_map_properties_changed(sd_bus *bus,
assert(m);
assert(map);
/* skip interface, but allow callers to do that themselves */
sd_bus_message_skip(m, "s");
r = bus_message_map_all_properties(bus, m, map, userdata);
if (r < 0)
return r;