mirror of
https://github.com/moparisthebest/curl
synced 2024-12-25 09:38:54 -05:00
c-hyper: fix NTLM on closed connection tested with test159
Closes #7154
This commit is contained in:
parent
dddad339e8
commit
83036d86af
@ -166,6 +166,18 @@ static int hyper_body_chunk(void *userdata, const hyper_buf *chunk)
|
|||||||
|
|
||||||
if(0 == k->bodywrites++) {
|
if(0 == k->bodywrites++) {
|
||||||
bool done = FALSE;
|
bool done = FALSE;
|
||||||
|
#if defined(USE_NTLM)
|
||||||
|
struct connectdata *conn = data->conn;
|
||||||
|
if(conn->bits.close &&
|
||||||
|
(((data->req.httpcode == 401) &&
|
||||||
|
(conn->http_ntlm_state == NTLMSTATE_TYPE2)) ||
|
||||||
|
((data->req.httpcode == 407) &&
|
||||||
|
(conn->proxy_ntlm_state == NTLMSTATE_TYPE2)))) {
|
||||||
|
infof(data, "Connection closed while negotiating NTLM\n");
|
||||||
|
data->state.authproblem = TRUE;
|
||||||
|
Curl_safefree(data->req.newurl);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
result = Curl_http_firstwrite(data, data->conn, &done);
|
result = Curl_http_firstwrite(data, data->conn, &done);
|
||||||
if(result || done) {
|
if(result || done) {
|
||||||
infof(data, "Return early from hyper_body_chunk\n");
|
infof(data, "Return early from hyper_body_chunk\n");
|
||||||
|
@ -1212,8 +1212,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_HYPER
|
#ifdef USE_HYPER
|
||||||
if(conn->datastream)
|
if(conn->datastream) {
|
||||||
return conn->datastream(data, conn, &didwhat, done, select_res);
|
result = conn->datastream(data, conn, &didwhat, done, select_res);
|
||||||
|
if(result || *done)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else {
|
||||||
#endif
|
#endif
|
||||||
/* We go ahead and do a read if we have a readable socket or if
|
/* We go ahead and do a read if we have a readable socket or if
|
||||||
the stream was rewound (in which case we have data in a
|
the stream was rewound (in which case we have data in a
|
||||||
@ -1232,6 +1236,9 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#ifdef USE_HYPER
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
k->now = Curl_now();
|
k->now = Curl_now();
|
||||||
if(!didwhat) {
|
if(!didwhat) {
|
||||||
|
Loading…
Reference in New Issue
Block a user