HTTP auth: fix proxy Negotiate bug
authorRene Bernhardt <rene.bernhardt@pcvisit.de>
Thu, 3 Nov 2011 22:25:17 +0000 (23:25 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 6 Nov 2011 16:19:37 +0000 (17:19 +0100)
commit4851dafcf164bf2de5bd33c3cf2b786422ed05b6
tree30f01f79fdbd592536736b2e528c184c0b0d104f
parent73029dca5aacef7083a41e61c9e0842c012c452c
HTTP auth: fix proxy Negotiate bug

If a proxy offers several Authentication schemes where NTLM and
Negotiate are offered by the proxy and you tell libcurl not to use the
Negotiate scheme then the request never returns when the proxy answers
with its HTTP 407 reply.

It is reproducible by the following steps:

- Use a proxy that offers NTLM and Negotiate ( CURLOPT_PROXY and
CURLOPT_PROXYPORT )

- Tell libcurl NOT to use Negotiate CURL_EASY_SETOPT(CURLOPT_PROXYAUTH,
CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_NTLM )

- Start the request

The call to CURL_EASY_PERFORM never returns. If you switch on debug
logging you can see that libcurl issues a new request As soon as it
received the 407 reply. Instead it should return and set the response
code to 407.

Bug: http://curl.haxx.se/mail/lib-2011-10/0323.html
lib/http.c