From: Amos Jeffries Date: Sun, 12 Apr 2009 12:17:00 +0000 (+1200) Subject: Bug 2276: Too many queued ntlm authenticators running X-Git-Tag: SQUID_3_2_0_1~1065 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5a5b2c567e987ac2ed2439dbd88aade4a6cdab71;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 7b9d74dd27..4965b738d5 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, @@ -197,7 +204,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); @@ -212,7 +226,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;