mirror of
https://github.com/systemd/systemd.git
synced 2024-10-28 11:55:44 +03:00
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:
parent
c168eb6785
commit
427c71629e
@ -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);
|
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);
|
r = bus_message_map_properties_changed(bus, signal, kbdctx_locale_map, kc);
|
||||||
if (r < 0) {
|
if (r < 0)
|
||||||
log_debug("idev-keyboard: cannot handle PropertiesChanged from locale1: %s", strerror(-r));
|
goto error;
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (r > 0) {
|
if (r > 0) {
|
||||||
r = kbdctx_query_locale(kc);
|
r = kbdctx_query_locale(kc);
|
||||||
@ -331,6 +334,10 @@ static int kbdctx_locale_props_changed_fn(sd_bus *bus,
|
|||||||
|
|
||||||
kbdctx_refresh_keymap(kc);
|
kbdctx_refresh_keymap(kc);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
log_debug("idev-keyboard: cannot handle PropertiesChanged from locale1: %s", strerror(-r));
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int kbdctx_setup_bus(kbdctx *kc) {
|
static int kbdctx_setup_bus(kbdctx *kc) {
|
||||||
|
@ -1051,9 +1051,6 @@ int bus_message_map_properties_changed(sd_bus *bus,
|
|||||||
assert(m);
|
assert(m);
|
||||||
assert(map);
|
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);
|
r = bus_message_map_all_properties(bus, m, map, userdata);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
Loading…
Reference in New Issue
Block a user