_dbus_assert(connection != NULL);
+ if (deferred_message_param)
+ deferred_message = *deferred_message_param;
+
if (dbus_connection_get_unix_user(connection, &uid) == FALSE)
return BUS_RESULT_FALSE;
break;
case CYNARA_API_CACHE_MISS:
- deferred_message = bus_deferred_message_new(message, sender, addressed_recipient,
- proposed_recipient, BUS_RESULT_LATER);
- if (deferred_message == NULL)
- {
- _dbus_verbose("Failed to allocate memory for deferred message\n");
- return_result = BUS_RESULT_FALSE;
- break;
- }
+ if (deferred_message == NULL)
+ {
+ deferred_message = bus_deferred_message_new(message, sender, addressed_recipient,
+ proposed_recipient, BUS_RESULT_LATER);
+ if (deferred_message == NULL)
+ {
+ _dbus_verbose("Failed to allocate memory for deferred message\n");
+ return_result = BUS_RESULT_FALSE;
+ break;
+ }
+ }
+ else
+ {
+ bus_deferred_message_ref(deferred_message);
+ }
/* callback is supposed to unref deferred_message*/
result = cynara_async_create_request(cynara->cynara, label, session_id, user, privilege, &check_id,