aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2014-07-11 12:11:14 +0100
committerDaniel Stenberg <daniel@haxx.se>2014-07-16 17:26:08 +0200
commit3de576efda1b9a754bc16c8b183403669a144543 (patch)
treeca32485c2a3bbdc67525585f1b637e0f43909489 /lib
parent6bc76194e8c56a7a06dc6bd2ba99e112321d49e3 (diff)
Fix negotiate auth to proxies to track correct state
Diffstat (limited to 'lib')
-rw-r--r--lib/http.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/http.c b/lib/http.c
index 504bcb62e..4931dd897 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -737,6 +737,10 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
*/
struct SessionHandle *data = conn->data;
+#ifdef USE_HTTP_NEGOTIATE
+ struct negotiatedata *negdata = proxy?
+ &data->state.proxyneg:&data->state.negotiate;
+#endif
unsigned long *availp;
struct auth *authp;
@@ -775,8 +779,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
authp->avail |= CURLAUTH_GSSNEGOTIATE;
if(authp->picked == CURLAUTH_GSSNEGOTIATE) {
- if(data->state.negotiate.state == GSS_AUTHSENT ||
- data->state.negotiate.state == GSS_AUTHNONE) {
+ if(negdata->state == GSS_AUTHSENT || negdata->state == GSS_AUTHNONE) {
neg = Curl_input_negotiate(conn, proxy, auth);
if(neg == 0) {
DEBUGASSERT(!data->req.newurl);
@@ -785,7 +788,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
return CURLE_OUT_OF_MEMORY;
data->state.authproblem = FALSE;
/* we received GSS auth info and we dealt with it fine */
- data->state.negotiate.state = GSS_AUTHRECV;
+ negdata->state = GSS_AUTHRECV;
}
else
data->state.authproblem = TRUE;