]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
If all login processes are in use and we can't create a new one, log a warning.
authorTimo Sirainen <tss@iki.fi>
Tue, 20 Jan 2009 20:04:25 +0000 (15:04 -0500)
committerTimo Sirainen <tss@iki.fi>
Tue, 20 Jan 2009 20:04:25 +0000 (15:04 -0500)
--HG--
branch : HEAD

src/master/login-process.c
src/master/login-process.h

index c6e88f1fac55943f8d62b0827d6942e1a31a4f80..bd7608e9f2938c4445a5b29e00747ee39a7241ba 100644 (file)
@@ -23,6 +23,8 @@
 #include <syslog.h>
 #include <sys/stat.h>
 
+#define LOGIN_LIMIT_WARNING_MIN_INTERVAL (60*5)
+
 struct login_process {
        struct child_process process;
 
@@ -801,6 +803,12 @@ static int login_group_start_missings(struct login_group *group)
                if (group->oldest_prelogin_process != NULL &&
                    group->oldest_prelogin_process->initialized)
                        login_process_destroy(group->oldest_prelogin_process);
+               else if (ioloop_time - group->last_limit_warning >
+                        LOGIN_LIMIT_WARNING_MIN_INTERVAL) {
+                       group->last_limit_warning = ioloop_time;
+                       i_warning("All login processes are in use. You may "
+                                 "need to increase login_max_processes_count");
+               }
        }
 
        /* we want to respond fast when multiple clients are connecting
index c650feb8af51f553c6ead3564780e1858dfac15a..5a25f5a44ce570c5740963c50aebcff1720c0d81 100644 (file)
@@ -13,6 +13,7 @@ struct login_group {
        unsigned int processes;
        unsigned int listening_processes;
        unsigned int wanted_processes_count;
+       time_t last_limit_warning;
 
        /* if login_process_per_connection=yes this contains the list of
           processes that are in LOGIN_STATE_FULL_PRELOGINS state */