From: Lennart Poettering Date: Tue, 11 Oct 2011 02:43:01 +0000 (+0200) Subject: logind: fail gracefully if too many sessions are created X-Git-Tag: v37~8 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=688c56ff7d124124007761f917a2950364509043;p=systemd logind: fail gracefully if too many sessions are created https://bugzilla.redhat.com/show_bug.cgi?id=744726 --- diff --git a/TODO b/TODO index aa51332c..779d1a30 100644 --- a/TODO +++ b/TODO @@ -17,14 +17,10 @@ Bugfixes: * make polkit checks async -* fail gracefully if logind reaches it RLIMIT_NFILES for fifos - Features: * ConditionCapability= -* read fedora style timezone name config for compat - * if we can not get user quota for tmpfs, mount a separate tmpfs instance for every user in /run/user/$USER with a configured maximum size diff --git a/src/logind-dbus.c b/src/logind-dbus.c index bc1e49d1..0550d1bd 100644 --- a/src/logind-dbus.c +++ b/src/logind-dbus.c @@ -973,8 +973,11 @@ static DBusHandlerResult manager_message_handler( } else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "CreateSession")) { r = bus_manager_create_session(m, message, &reply); - if (r == -ENOMEM) - goto oom; + + /* Don't delay the work on OOM here, since it might be + * triggered by a low RLIMIT_NOFILE here (since we + * send a dupped fd to the client), and we'd rather + * see this fail quickly then be retried later */ if (r < 0) return bus_send_error_reply(connection, message, &error, r);