mirror of
https://github.com/curl/curl.git
synced 2026-08-26 05:53:32 +03:00
conncontrol: reuse handling
Add protocol handler flag `PROTOPT_CONN_REUSE` to indicate that the protocol allows reusing connections for other tranfers. Add that to all handlers that support it. Create connections with `conn->bits.close = FALSE` and remove all the `connkeep()` calls in protocol handlers setup/connect implementations. `PROTOPT_CONN_REUSE` assures that the default behaviour applies at the end of a transfer without need to juggle the close bit. `conn->bits.close` now serves as an additional indication that a connection cannot be reused. Only protocol handles that allow reuse need to set it to override the default behaviour. Remove all `connclose()` and `connkeep()` calls from connection filters. Filters should not modify connection flags. They are supposed to run in eyeballing situations where a filter is just one of many determining the outcome. Fix http response header handling to only honour `Connection: close` for HTTP/1.x versions. Closes #19333
This commit is contained in:
parent
a9e7a027ed
commit
feea968512
21 changed files with 93 additions and 114 deletions
|
|
@ -2071,7 +2071,7 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
|
|||
size_t nread;
|
||||
|
||||
if(should_close_session(ctx)) {
|
||||
CURL_TRC_CF(data, cf, "progress ingress, session is closed");
|
||||
CURL_TRC_CF(data, cf, "[0] ingress: session is closed");
|
||||
return CURLE_HTTP2;
|
||||
}
|
||||
|
||||
|
|
@ -2128,15 +2128,16 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
|
|||
result = h2_process_pending_input(cf, data);
|
||||
if(result)
|
||||
return result;
|
||||
CURL_TRC_CF(data, cf, "[0] progress ingress: inbufg=%zu",
|
||||
CURL_TRC_CF(data, cf, "[0] ingress: nw-in buffered %zu",
|
||||
Curl_bufq_len(&ctx->inbufq));
|
||||
}
|
||||
|
||||
if(ctx->conn_closed && Curl_bufq_is_empty(&ctx->inbufq)) {
|
||||
connclose(cf->conn, "GOAWAY received");
|
||||
connclose(cf->conn, ctx->rcvd_goaway ? "server closed with GOAWAY" :
|
||||
"server closed abruptly");
|
||||
}
|
||||
|
||||
CURL_TRC_CF(data, cf, "[0] progress ingress: done");
|
||||
CURL_TRC_CF(data, cf, "[0] ingress: done");
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue