diff options
-rw-r--r-- | lib/http.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/http.c b/lib/http.c index 4c1cfc549..beab543ee 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1435,8 +1435,14 @@ CURLcode Curl_http_done(struct connectdata *conn, #ifdef USE_SPNEGO if(data->state.proxyneg.state == GSS_AUTHSENT || - data->state.negotiate.state == GSS_AUTHSENT) + data->state.negotiate.state == GSS_AUTHSENT) { + /* add forbid re-use if http-code != 401/407 as a WA only needed for + * 401/407 that signal auth failure (empty) otherwise state will be RECV + * with current code */ + if((data->req.httpcode != 401) && (data->req.httpcode != 407)) + connclose(conn, "Negotiate transfer completed"); Curl_cleanup_negotiate(data); + } #endif /* set the proper values (possibly modified on POST) */ |