diff options
author | Daniel Stenberg <daniel@haxx.se> | 2008-08-11 19:26:01 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2008-08-11 19:26:01 +0000 |
commit | 019bde82ce8fd9d0a335edb30441088a96906d1b (patch) | |
tree | 5462a395d04054e9464aee2cc8511d5b88b4da1d | |
parent | ca5e38751c65c29bc94616a86e8d3d6affb8f053 (diff) | |
download | curl-019bde82ce8fd9d0a335edb30441088a96906d1b.tar.gz |
- Constantine Sapuntzakis filed bug report #2042440
(http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a
problem when using NTLM over a proxy but the end-point does Basic, and then
libcurl would do wrong when the host sent "Connection: close" as the proxy's
NTLM state was erroneously cleared.
-rw-r--r-- | CHANGES | 8 | ||||
-rw-r--r-- | RELEASE-NOTES | 4 | ||||
-rw-r--r-- | lib/url.c | 29 |
3 files changed, 30 insertions, 11 deletions
@@ -6,6 +6,14 @@ Changelog + +Daniel Stenberg (11 Aug 2008) +- Constantine Sapuntzakis filed bug report #2042440 + (http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a + problem when using NTLM over a proxy but the end-point does Basic, and then + libcurl would do wrong when the host sent "Connection: close" as the proxy's + NTLM state was erroneously cleared. + Yang Tse (11 Aug 2008) - Added missing signed and unsigned curl_off_t integer constant suffixes for internal and external use. CURL_SUFFIX_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_TU. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 5b1926453..d105b61ba 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -49,6 +49,7 @@ This release includes the following bugfixes: o HTTP PUT with -C - sent bad Content-Range: header o HTTP PUT or POST with redirect could lead to hang o re-use of connections with failed SSL connects in the multi interface + o NTLM over proxy state was wrongly cleared when host connection was closed This release includes the following known bugs: @@ -69,7 +70,8 @@ advice from friends like these: Rob Crittenden, Dengminwen, Christopher Palow, Hans-Jurgen May, Phil Pellouchoud, Eduard Bloch, John Lightsey, Stephen Collyer, Tor Arntsen, Rolland Dudemaine, Phil Blundell, Scott Barrett, Andreas Schuldei, - Peter Lamberg, David Bau, Pramod Sharma, Yehoshua Hershberg + Peter Lamberg, David Bau, Pramod Sharma, Yehoshua Hershberg, + Constantine Sapuntzakis Thanks! (and sorry if I forgot to mention someone) @@ -2179,22 +2179,31 @@ CURLcode Curl_disconnect(struct connectdata *conn) Curl_expire(data, 0); /* shut off timers */ Curl_hostcache_prune(data); /* kill old DNS cache entries */ - if((conn->ntlm.state != NTLMSTATE_NONE) || - (conn->proxyntlm.state != NTLMSTATE_NONE)) { + { + int has_host_ntlm = (conn->ntlm.state != NTLMSTATE_NONE); + int has_proxy_ntlm = (conn->proxyntlm.state != NTLMSTATE_NONE); + /* Authentication data is a mix of connection-related and sessionhandle- related stuff. NTLM is connection-related so when we close the shop we shall forget. */ - data->state.authhost.done = FALSE; - data->state.authhost.picked = - data->state.authhost.want; - data->state.authproxy.done = FALSE; - data->state.authproxy.picked = - data->state.authproxy.want; + if (has_host_ntlm) { + data->state.authhost.done = FALSE; + data->state.authhost.picked = + data->state.authhost.want; + } + + if (has_proxy_ntlm) { + data->state.authproxy.done = FALSE; + data->state.authproxy.picked = + data->state.authproxy.want; + } - data->state.authproblem = FALSE; + if (has_host_ntlm || has_proxy_ntlm) { + data->state.authproblem = FALSE; - Curl_ntlm_cleanup(conn); + Curl_ntlm_cleanup(conn); + } } if(conn->handler->disconnect) |