dbus: Do send out "replies" to signals

Some parts of systemd (at least the DBus activation codepath) "reply"
to signals, which of course have the no-reply flag set.  We will be
defensive here and still send out a reply if we're passed a signal.

Regression introduced by: c6a818c820

Reported-by: Mantas Mikulėnas <grawity@gmail.com>
Tested-by: Mantas Mikulėnas <grawity@gmail.com>
This commit is contained in:
Colin Walters 2013-03-22 09:36:22 -04:00 committed by Lennart Poettering
parent 356ce9915a
commit a5a5ade34c

View file

@ -717,9 +717,14 @@ dbus_bool_t bus_maybe_send_reply (DBusConnection *c,
DBusMessage *message,
DBusMessage *reply)
{
if (dbus_message_get_no_reply (message))
/* Some parts of systemd "reply" to signals, which of course
* have the no-reply flag set. We will be defensive here and
* still send out a reply if we're passed a signal.
*/
if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL &&
dbus_message_get_no_reply(message))
return TRUE;
return dbus_connection_send (c, reply, NULL);
return dbus_connection_send(c, reply, NULL);
}
DBusHandlerResult bus_send_error_reply(DBusConnection *c, DBusMessage *message, DBusError *berror, int error) {