From: Amos Jeffries Date: Sat, 25 Apr 2009 00:19:35 +0000 (+1200) Subject: Bug 2276: Too many queued ntlm authenticators running X-Git-Tag: SQUID_3_0_STABLE15~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed9cfad6f382f831b927ab233675c33a47d9eafd;p=thirdparty%2Fsquid.git Bug 2276: Too many queued ntlm authenticators running This enforces the admin configured number of helpers as a maximum number running by calculating how many helpers have died and need restarting. --- diff --git a/src/helper.cc b/src/helper.cc index b95c28a61d..28607c09b6 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -98,7 +98,14 @@ helperOpenServers(helper * hlp) else shortname = xstrdup(progname); - debugs(84, 1, "helperOpenServers: Starting " << hlp->n_to_start << " '" << shortname << "' processes"); + /* dont ever start more than hlp->n_to_start processes. */ + int need_new = hlp->n_to_start - hlp->n_running; + + debugs(84, 1, "helperOpenServers: Starting " << need_new << "/" << hlp->n_to_start << " '" << shortname << "' processes"); + + if(need_new < 1) { + debugs(84, 1, "helperOpenServers: No '" << shortname << "' processes needed."); + } procname = (char *)xmalloc(strlen(shortname) + 3); @@ -113,7 +120,7 @@ helperOpenServers(helper * hlp) assert(nargs <= HELPER_MAX_ARGS); - for (k = 0; k < hlp->n_to_start; k++) { + for (k = 0; k < need_new; k++) { getCurrentTime(); rfd = wfd = -1; pid = ipcCreate(hlp->ipc_type, @@ -195,7 +202,14 @@ helperStatefulOpenServers(statefulhelper * hlp) else shortname = xstrdup(progname); - debugs(84, 1, "helperStatefulOpenServers: Starting " << hlp->n_to_start << " '" << shortname << "' processes"); + /* dont ever start more than hlp->n_to_start processes. */ + int need_new = hlp->n_to_start - hlp->n_running; + + debugs(84, 1, "helperOpenServers: Starting " << need_new << "/" << hlp->n_to_start << " '" << shortname << "' processes"); + + if(need_new < 1) { + debugs(84, 1, "helperStatefulOpenServers: No '" << shortname << "' processes needed."); + } char *procname = (char *)xmalloc(strlen(shortname) + 3); @@ -210,7 +224,7 @@ helperStatefulOpenServers(statefulhelper * hlp) assert(nargs <= HELPER_MAX_ARGS); - for (int k = 0; k < hlp->n_to_start; k++) { + for (int k = 0; k < need_new; k++) { getCurrentTime(); int rfd = -1; int wfd = -1;