{
DBusConnection *connection = data;
BusConnectionData *d = BUS_CONNECTION_DATA (connection);
+ unsigned long uid;
int limit;
_dbus_assert (d != NULL);
limit = bus_context_get_pending_fd_timeout (d->connections->context);
+
+ if (dbus_connection_get_unix_user (connection, &uid) && uid == 0)
+ {
+ bus_context_log (d->connections->context, DBUS_SYSTEM_LOG_WARNING,
+ "Connection \"%s\" (%s) has had Unix fds pending for "
+ "too long (pending_fd_timeout=%dms); tolerating it, "
+ "because it has uid 0",
+ d->name != NULL ? d->name : "(null)",
+ bus_connection_get_loginfo (connection),
+ limit);
+ return TRUE;
+ }
+
bus_context_log (d->connections->context, DBUS_SYSTEM_LOG_WARNING,
"Connection \"%s\" (%s) has had Unix fds pending for too long, "
"closing it (pending_fd_timeout=%d ms)",
if (f->skip)
return;
+ if (getuid () == 0)
+ {
+ g_test_skip ("Cannot test, uid 0 is immune to this limit");
+ return;
+ }
+
have_mem = dbus_connection_add_filter (f->left_conn, wait_for_disconnected_cb,
&disconnected, NULL);
g_assert (have_mem);