} else {
debugs(29, 0, "AuthNegotiateConfig::parse: unrecognised negotiate auth scheme parameter '" << param_str << "'");
}
-
- /*
- * disable client side request pipelining. There is a race with
- * Negotiate when the client sends a second request on an Negotiate
- * connection before the authenticate challenge is sent. With
- * this patch, the client may fail to authenticate, but squid's
- * state will be preserved. Caveats: this should be a post-parse
- * test, but that can wait for the modular parser to be integrated.
- */
- if (authenticate)
- Config.onoff.pipeline_prefetch = 0;
}
const char *
} else {
debugs(29, 0, "AuthNTLMConfig::parse: unrecognised ntlm auth scheme parameter '" << param_str << "'");
}
-
- /*
- * disable client side request pipelining. There is a race with
- * NTLM when the client sends a second request on an NTLM
- * connection before the authenticate challenge is sent. With
- * this patch, the client may fail to authenticate, but squid's
- * state will be preserved. Caveats: this should be a post-parse
- * test, but that can wait for the modular parser to be integrated.
- */
- if (authenticate)
- Config.onoff.pipeline_prefetch = 0;
}
const char *
" Change client_request_buffer_max or request_header_max_size limits.",
(uint32_t)Config.maxRequestBufferSize, (uint32_t)Config.maxRequestHeaderSize);
}
+
+ /*
+ * disable client side request pipelining. There is a race with
+ * Negotiate and NTLM when the client sends a second request on an
+ * connection before the authenticate challenge is sent. With
+ * pipelining OFF, the client may fail to authenticate, but squid's
+ * state will be preserved.
+ */
+ if (Config.onoff.pipeline_prefetch) {
+ AuthConfig *nego = AuthConfig::Find("Negotiate");
+ AuthConfig *ntlm = AuthConfig::Find("NTLM");
+ if ((nego && nego->active()) || (ntlm && ntlm->active())) {
+ debugs(3, DBG_IMPORTANT, "WARNING: pipeline_prefetch breaks NTLM and Negotiate authentication. Forced OFF.");
+ Config.onoff.pipeline_prefetch = 0;
+ }
+ }
}
/** Parse a line containing an obsolete directive.
Defaults to off for bandwidth management and access logging
reasons.
+
+ WARNING: pipelining breaks NTLM and Negotiate/Kerberos authentication.
DOC_END
NAME: high_response_time_warning