Commit 6663cb5d authored by Will Thompson's avatar Will Thompson

Dispatch post-activation messages to anyone interested

Previously, if a method call activated a service, it would only be
delivered to that service, and not to other services with match rules
which should match. This patch replaces the improperly-duplicated
dispatch code in activation.c with a call back into the normal dispatch
code, fixing this bug (fd.o#26427).

(Additionally, were one to service-activate a service that doesn't
understand file descriptors with a message containing a file descriptor,
the previous code would send it anyway, and the service's dbus library
would blow up. This is also fixed here, since the normal dispatch code
checks this correctly.)
parent 3a2753e6
......@@ -25,6 +25,7 @@
#include "activation.h"
#include "activation-exit-codes.h"
#include "desktop-file.h"
#include "dispatch.h"
#include "services.h"
#include "test.h"
#include "utils.h"
......@@ -1132,21 +1133,12 @@ bus_activation_send_pending_auto_activation_messages (BusActivation *activation
addressed_recipient = bus_service_get_primary_owners_connection (service);
/* Check the security policy, which has the side-effect of adding an
* expected pending reply.
if (!bus_context_check_security_policy (activation->context, transaction,
entry->activation_message, error))
/* Resume dispatching where we left off in bus_dispatch() */
if (!bus_dispatch_matches (transaction,
entry->activation_message, error))
goto error;
if (!bus_transaction_send (transaction, addressed_recipient, entry->activation_message))
BUS_SET_OOM (error);
goto error;
link = next;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment