aboutsummaryrefslogtreecommitdiff
path: root/lib/http.c
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2014-07-11 11:09:34 +0100
committerDaniel Stenberg <daniel@haxx.se>2014-07-16 17:26:08 +0200
commitf78ae415d24b9bd89d6c121c556e411fdb21c6aa (patch)
treeb79591db0587cdf209e18d2fdf004f11f5b85f14 /lib/http.c
parent59431c242bf1d93980756fa2db2d08744bfa79d3 (diff)
Don't clear GSSAPI state between each exchange in the negotiation
GSSAPI doesn't work very well if we forget everything ever time. XX: Is Curl_http_done() the right place to do the final cleanup?
Diffstat (limited to 'lib/http.c')
-rw-r--r--lib/http.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/http.c b/lib/http.c
index 78791ee1a..91060567e 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -1443,6 +1443,12 @@ CURLcode Curl_http_done(struct connectdata *conn,
Curl_unencode_cleanup(conn);
+#ifdef USE_HTTP_NEGOTIATE
+ if(data->state.proxyneg.state == GSS_AUTHSENT ||
+ data->state.negotiate.state == GSS_AUTHSENT)
+ Curl_cleanup_negotiate(data);
+#endif
+
/* set the proper values (possibly modified on POST) */
conn->fread_func = data->set.fread_func; /* restore */
conn->fread_in = data->set.in; /* restore */