bus-match.c | bus-match.c | |||
---|---|---|---|---|
skipping to change at line 296 | skipping to change at line 296 | |||
r = sd_bus_message_rewind(m, true); | r = sd_bus_message_rewind(m, true); | |||
if (r < 0) | if (r < 0) | |||
return r; | return r; | |||
/* Run the callback. And then invoke siblings. */ | /* Run the callback. And then invoke siblings. */ | |||
if (node->leaf.callback->callback) { | if (node->leaf.callback->callback) { | |||
_cleanup_bus_error_free_ sd_bus_error error_buffer = SD_BUS_ERROR_NULL; | _cleanup_bus_error_free_ sd_bus_error error_buffer = SD_BUS_ERROR_NULL; | |||
sd_bus_slot *slot; | sd_bus_slot *slot; | |||
slot = container_of(node->leaf.callback, sd_bus_slo t, match_callback); | slot = container_of(node->leaf.callback, sd_bus_slo t, match_callback); | |||
if (bus) | if (bus) { | |||
bus->current_slot = sd_bus_slot_ref(slot); | bus->current_slot = sd_bus_slot_ref(slot); | |||
bus->current_handler = node->leaf.callback- | ||||
>callback; | ||||
bus->current_userdata = slot->userdata; | ||||
} | ||||
r = node->leaf.callback->callback(bus, m, slot->use rdata, &error_buffer); | r = node->leaf.callback->callback(bus, m, slot->use rdata, &error_buffer); | |||
if (bus) | if (bus) { | |||
bus->current_userdata = NULL; | ||||
bus->current_handler = NULL; | ||||
bus->current_slot = sd_bus_slot_unref(slot) ; | bus->current_slot = sd_bus_slot_unref(slot) ; | |||
} | ||||
r = bus_maybe_reply_error(m, r, &error_buffer); | r = bus_maybe_reply_error(m, r, &error_buffer); | |||
if (r != 0) | if (r != 0) | |||
return r; | return r; | |||
if (bus && bus->match_callbacks_modified) | if (bus && bus->match_callbacks_modified) | |||
return 0; | return 0; | |||
} | } | |||
return bus_match_run(bus, node->next, m); | return bus_match_run(bus, node->next, m); | |||
End of changes. 4 change blocks. | ||||
2 lines changed or deleted | 9 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |