From: Will Thompson Date: Thu, 4 Feb 2010 20:12:28 +0000 (+0000) Subject: Move dispatching to destination to bus_dispatch_matches() X-Git-Tag: dbus-1.2.24~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa275ff175180f9635c473bfb56912835aa488af;p=platform%2Fupstream%2Fdbus.git Move dispatching to destination to bus_dispatch_matches() --- diff --git a/bus/dispatch.c b/bus/dispatch.c index ae6971d..ca55177 100644 --- a/bus/dispatch.c +++ b/bus/dispatch.c @@ -86,10 +86,28 @@ bus_dispatch_matches (BusTransaction *transaction, _dbus_assert (sender == NULL || bus_connection_is_active (sender)); _dbus_assert (dbus_message_get_sender (message) != NULL); + context = bus_transaction_get_context (transaction); + + /* First, send the message to the addressed_recipient, if there is one. */ + if (addressed_recipient != NULL) + { + if (!bus_context_check_security_policy (context, transaction, + sender, addressed_recipient, + addressed_recipient, + message, error)) + return FALSE; + + /* Dispatch the message */ + if (!bus_transaction_send (transaction, addressed_recipient, message)) + { + BUS_SET_OOM (error); + return FALSE; + } + } + + /* Now dispatch to others who look interested in this message */ connections = bus_transaction_get_connections (transaction); - dbus_error_init (&tmp_error); - context = bus_transaction_get_context (transaction); matchmaker = bus_context_get_matchmaker (context); recipients = NULL; @@ -289,24 +307,12 @@ bus_dispatch (DBusConnection *connection, { addressed_recipient = bus_service_get_primary_owners_connection (service); _dbus_assert (addressed_recipient != NULL); - - if (!bus_context_check_security_policy (context, transaction, - connection, addressed_recipient, - addressed_recipient, - message, &error)) - goto out; - - /* Dispatch the message */ - if (!bus_transaction_send (transaction, addressed_recipient, message)) - { - BUS_SET_OOM (&error); - goto out; - } } } - /* Now match the messages against any match rules, which will send - * out signals and such. addressed_recipient may == NULL. + /* Now send the message to its destination (or not, if + * addressed_recipient == NULL), and match it against other connections' + * match rules. */ if (!bus_dispatch_matches (transaction, connection, addressed_recipient, message, &error)) goto out;