cf-h2-proxy: fix processing ingress to stop too early
- progress ingress stopped too early, causing data from the underlying filters to not be processed and report that no tunnel data was available - this lead to "hangers" where no socket activity was seen but data rested in buffers Closes #10952
This commit is contained in:
parent
be800a6cab
commit
43d7ccd03d
@ -439,7 +439,6 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
|
|||||||
struct cf_h2_proxy_ctx *ctx = cf->ctx;
|
struct cf_h2_proxy_ctx *ctx = cf->ctx;
|
||||||
CURLcode result = CURLE_OK;
|
CURLcode result = CURLE_OK;
|
||||||
ssize_t nread;
|
ssize_t nread;
|
||||||
bool keep_reading = TRUE;
|
|
||||||
|
|
||||||
/* Process network input buffer fist */
|
/* Process network input buffer fist */
|
||||||
if(!Curl_bufq_is_empty(&ctx->inbufq)) {
|
if(!Curl_bufq_is_empty(&ctx->inbufq)) {
|
||||||
@ -451,8 +450,7 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
|
|||||||
|
|
||||||
/* Receive data from the "lower" filters, e.g. network until
|
/* Receive data from the "lower" filters, e.g. network until
|
||||||
* it is time to stop or we have enough data for this stream */
|
* it is time to stop or we have enough data for this stream */
|
||||||
while(keep_reading &&
|
while(!ctx->conn_closed && /* not closed the connection */
|
||||||
!ctx->conn_closed && /* not closed the connection */
|
|
||||||
!ctx->tunnel.closed && /* nor the tunnel */
|
!ctx->tunnel.closed && /* nor the tunnel */
|
||||||
Curl_bufq_is_empty(&ctx->inbufq) && /* and we consumed our input */
|
Curl_bufq_is_empty(&ctx->inbufq) && /* and we consumed our input */
|
||||||
!Curl_bufq_is_full(&ctx->tunnel.recvbuf)) {
|
!Curl_bufq_is_full(&ctx->tunnel.recvbuf)) {
|
||||||
@ -472,7 +470,6 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
keep_reading = Curl_bufq_is_full(&ctx->inbufq);
|
|
||||||
if(h2_process_pending_input(cf, data, &result))
|
if(h2_process_pending_input(cf, data, &result))
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user