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

Alban Crequy alban.crequy at
Thu Sep 30 11:49:45 PDT 2010


What happens when a process does not read its incoming D-Bus messages on
the socket and other D-Bus peers keep sending messages to it?

With the default configuration on the session bus, dbus-daemon's memory
usage is growing and the limit is really high:
  <limit name="max_incoming_bytes">1000000000</limit>
  <limit name="max_outgoing_bytes">1000000000</limit>

I tried to reduce the limit to a small value, and then I notice that
dbus-daemon's memory usage does not grow anymore, and it seems to drop
the messages. When I strace dbus-daemon, it reads the messages from the
peers but does not send the messages to the recipient.

_dbus_transport_get_dispatch_status (DBusTransport *transport)
  if (_dbus_counter_get_size_value (transport->live_messages) >= transport->max_live_messages_size ||
      _dbus_counter_get_unix_fd_value (transport->live_messages) >= transport->max_live_messages_unix_fds)
    return DBUS_DISPATCH_COMPLETE; /* complete for now */
Is it the function where the messages are dropped?


More information about the dbus mailing list