dbus_bool_t requested_reply;
const char *privilege;
char *out_rule = NULL;
+ BusResult can_send_result = BUS_RESULT_TRUE;
type = dbus_message_get_type (message);
src = dbus_message_get_sender (message);
log = FALSE;
if (sender_policy) {
- switch (bus_client_policy_check_can_send (sender,
- sender_policy,
- context->registry,
- requested_reply,
- addressed_recipient,
- proposed_recipient,
- message, &toggles, &log, &privilege,
- deferred_message, &out_rule))
+ can_send_result = bus_client_policy_check_can_send (sender,
+ sender_policy,
+ context->registry,
+ requested_reply,
+ addressed_recipient,
+ proposed_recipient,
+ message, &toggles, &log, &privilege,
+ deferred_message, &out_rule);
+ if (can_send_result == BUS_RESULT_FALSE)
{
- case BUS_RESULT_TRUE:
- break;
- case BUS_RESULT_FALSE:
complain_about_message (context, DBUS_ERROR_ACCESS_DENIED,
"Rejected send message", toggles,
message, sender, proposed_recipient, requested_reply,
if (out_rule)
free (out_rule);
return BUS_RESULT_FALSE;
- break;
- case BUS_RESULT_LATER:
- return BUS_RESULT_LATER;
- break;
}
}
"security policy disallowing message due to recipient policy\n");
if (out_rule)
free (out_rule);
+ if (deferred_message && *deferred_message)
+ bus_deferred_message_set_response (*deferred_message, BUS_RESULT_FALSE);
return BUS_RESULT_FALSE;
case BUS_RESULT_LATER:
return BUS_RESULT_LATER;
}
}
+ if (can_send_result == BUS_RESULT_LATER)
+ return BUS_RESULT_LATER;
+
/* See if limits on size have been exceeded */
if (!bus_context_check_recipient_message_limits(context, proposed_recipient, sender, message,
requested_reply, error))