mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 08:38:49 -05:00
http_negotiate: do not close connection until negotiation is completed
Fix HTTP POST using CURLAUTH_NEGOTIATE. Closes #3275
This commit is contained in:
parent
6d0e487f9f
commit
07ebaf8378
@ -610,7 +610,6 @@ output_auth_headers(struct connectdata *conn,
|
||||
result = Curl_output_negotiate(conn, proxy);
|
||||
if(result)
|
||||
return result;
|
||||
authstatus->done = TRUE;
|
||||
negdata->state = GSS_AUTHSENT;
|
||||
}
|
||||
else
|
||||
|
@ -49,6 +49,7 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
|
||||
|
||||
/* Point to the correct struct with this */
|
||||
struct negotiatedata *neg_ctx;
|
||||
struct auth *authp;
|
||||
|
||||
if(proxy) {
|
||||
userp = conn->http_proxy.user;
|
||||
@ -57,6 +58,7 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
|
||||
data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
|
||||
host = conn->http_proxy.host.name;
|
||||
neg_ctx = &data->state.proxyneg;
|
||||
authp = &conn->data->state.authproxy;
|
||||
}
|
||||
else {
|
||||
userp = conn->user;
|
||||
@ -65,6 +67,7 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
|
||||
data->set.str[STRING_SERVICE_NAME] : "HTTP";
|
||||
host = conn->host.name;
|
||||
neg_ctx = &data->state.negotiate;
|
||||
authp = &conn->data->state.authhost;
|
||||
}
|
||||
|
||||
/* Not set means empty */
|
||||
@ -95,6 +98,11 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
|
||||
|
||||
if(result)
|
||||
Curl_auth_spnego_cleanup(neg_ctx);
|
||||
else
|
||||
/* If the status is different than 0 and we encountered no errors
|
||||
it means we have to continue. 0 is the OK value for both GSSAPI
|
||||
(GSS_S_COMPLETE) and SSPI (SEC_E_OK) */
|
||||
authp->done = !neg_ctx->status;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user