Index: squid/src/auth/ntlm/auth_ntlm.c diff -c squid/src/auth/ntlm/auth_ntlm.c:1.17.2.13 squid/src/auth/ntlm/auth_ntlm.c:1.17.2.14 *** squid/src/auth/ntlm/auth_ntlm.c:1.17.2.13 Sat Jul 17 10:05:53 2004 --- squid/src/auth/ntlm/auth_ntlm.c Sat Jul 17 10:09:53 2004 *************** *** 92,97 **** --- 92,98 ---- static hash_table *ntlm_challenge_cache = NULL; + static void authenticateNTLMReleaseServer(ntlm_request_t * ntlm_request); /* * * Private Functions *************** *** 381,388 **** xfree(ntlm_request->ntlmauthenticate); if (ntlm_request->authserver != NULL) { debug(29, 9) ("authenticateNTLMRequestFree: releasing server '%p'\n", ntlm_request->authserver); ! helperStatefulReleaseServer(ntlm_request->authserver); ! ntlm_request->authserver = NULL; } memPoolFree(ntlm_request_pool, ntlm_request); } --- 382,388 ---- xfree(ntlm_request->ntlmauthenticate); if (ntlm_request->authserver != NULL) { debug(29, 9) ("authenticateNTLMRequestFree: releasing server '%p'\n", ntlm_request->authserver); ! authenticateNTLMReleaseServer(ntlm_request); } memPoolFree(ntlm_request_pool, ntlm_request); } *************** *** 420,425 **** --- 420,429 ---- helper_stateful_server *server = ntlm_request->authserver; debug(29, 9) ("authenticateNTLMReleaseServer: releasing server '%p'\n", server); ntlm_request->authserver = NULL; + if (!ntlmConfig->challengeuses) { + ntlm_helper_state_t *helperstate = helperStatefulServerGetData(server); + helperstate->starve = 1; + } helperStatefulReleaseServer(server); } *************** *** 429,435 **** { helper_stateful_server *server = ntlm_request->authserver; ntlm_helper_state_t *helperstate = helperStatefulServerGetData(server); ! debug(29, 9) ("authenticateNTLMReleaseServer: releasing server '%p'\n", server); ntlm_request->authserver = NULL; helperstate->starve = 1; helperStatefulReleaseServer(server); --- 433,439 ---- { helper_stateful_server *server = ntlm_request->authserver; ntlm_helper_state_t *helperstate = helperStatefulServerGetData(server); ! debug(29, 9) ("authenticateNTLMResetServer: releasing server '%p'\n", server); ntlm_request->authserver = NULL; helperstate->starve = 1; helperStatefulReleaseServer(server); *************** *** 692,698 **** while ((server != NULL) && authenticateNTLMChangeChallenge_p(helperstate)) { /* flag this helper for challenge changing */ helperstate->starve = 1; ! helperStatefulReset(server); /* Get another server */ server = helperStatefulGetServer(ntlmauthenticators); helperstate = server ? helperStatefulServerGetData(server) : NULL; --- 696,702 ---- while ((server != NULL) && authenticateNTLMChangeChallenge_p(helperstate)) { /* flag this helper for challenge changing */ helperstate->starve = 1; ! helperStatefulReleaseServer(server); /* Get another server */ server = helperStatefulGetServer(ntlmauthenticators); helperstate = server ? helperStatefulServerGetData(server) : NULL; *************** *** 727,732 **** --- 731,738 ---- helperStatefulSubmit(ntlmauthenticators, buf, authenticateNTLMHandleReply, r, ntlm_request->authserver); } } else { + if (!ntlmConfig->challengeuses) + debug(29, 0) ("authenticateNTLMStart: Reused challenge in server %p even if challenge reuse is disabled!", server); /* (server != NULL and we have a valid challenge) */ /* TODO: turn the below into a function and call from here and handlereply */ /* increment the challenge uses */