mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
url: skip to-be-closed connections when pipelining
No longer attempt to use "doomed" to-be-closed connections when pipelining. Prior to this change connections marked for deletion (e.g. timeout) would be erroneously used, resulting in sporadic crashes. As originally reported and fixed by Carlo Wood (origin unknown). Bug: https://github.com/curl/curl/issues/627 Reported-by: Rider Linden Closes https://github.com/curl/curl/pull/1075 Participation-by: nopjmp@users.noreply.github.com
This commit is contained in:
parent
1671d84b38
commit
e5f0b1ab43
@ -2908,7 +2908,7 @@ static bool IsPipeliningPossible(const struct Curl_easy *handle,
|
||||
const struct connectdata *conn)
|
||||
{
|
||||
/* If a HTTP protocol and pipelining is enabled */
|
||||
if(conn->handler->protocol & PROTO_FAMILY_HTTP) {
|
||||
if((conn->handler->protocol & PROTO_FAMILY_HTTP) && !conn->bits.close) {
|
||||
|
||||
if(Curl_pipeline_wanted(handle->multi, CURLPIPE_HTTP1) &&
|
||||
(handle->set.httpversion != CURL_HTTP_VERSION_1_0) &&
|
||||
@ -3283,6 +3283,8 @@ ConnectionExists(struct Curl_easy *data,
|
||||
pipeLen = check->send_pipe->size + check->recv_pipe->size;
|
||||
|
||||
if(canPipeline) {
|
||||
if(check->bits.close)
|
||||
continue;
|
||||
|
||||
if(!check->bits.multiplex) {
|
||||
/* If not multiplexing, make sure the pipe has only GET requests */
|
||||
|
Loading…
Reference in New Issue
Block a user