max_outgoing_bytes: What if a D-Bus peer is too slow to read?

Alban Crequy alban.crequy at collabora.co.uk
Fri Oct 1 05:55:56 PDT 2010


Le Thu, 30 Sep 2010 16:38:42 -0400,
Havoc Pennington <hp at pobox.com> a écrit :

> No guarantee any of this works properly. Turn on DBUS_VERBOSE (see
> "man dbus-daemon" section DEBUGGING) and you can see what happens
> probably.

Then I see this message:

2121: [bus.c(1615):bus_context_check_security_policy] security policy
disallowing message due to full message queue

The message is silently not delivered to the recipient who has a full
outgoing queue. It is still delivered to other recipients, if any.

bus.c:bus_context_check_security_policy()

  /* See if limits on size have been exceeded */
  if (proposed_recipient &&
      ((dbus_connection_get_outgoing_size (proposed_recipient) > context->limits.max_outgoing_bytes) ||
       (dbus_connection_get_outgoing_unix_fds (proposed_recipient) > context->limits.max_outgoing_unix_fds)))
    {
      dbus_set_error (error, DBUS_ERROR_LIMITS_EXCEEDED,
                      "The destination service \"%s\" has a full message queue",
                      dest ? dest : (proposed_recipient ?
                                     bus_connection_get_name (proposed_recipient) :
                                     DBUS_SERVICE_DBUS));
      _dbus_verbose ("security policy disallowing message due to full message queue\n");
      return FALSE;
    }



More information about the dbus mailing list