]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
cf-h2-proxy: fix processing ingress to stop too early
authorStefan Eissing <stefan@eissing.org>
Thu, 13 Apr 2023 10:04:27 +0000 (12:04 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 13 Apr 2023 21:54:43 +0000 (23:54 +0200)
- 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

lib/cf-h2-proxy.c

index e39d32575cb0874a06bc9a934b935c7bee52e41b..d2c0ef2656dbb14e49c40b5867292edb02b2fc6c 100644 (file)
@@ -439,7 +439,6 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
   struct cf_h2_proxy_ctx *ctx = cf->ctx;
   CURLcode result = CURLE_OK;
   ssize_t nread;
-  bool keep_reading = TRUE;
 
   /* Process network input buffer fist */
   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
    * it is time to stop or we have enough data for this stream */
-  while(keep_reading &&
-        !ctx->conn_closed &&               /* not closed the connection */
+  while(!ctx->conn_closed &&               /* not closed the connection */
         !ctx->tunnel.closed &&             /* nor the tunnel */
         Curl_bufq_is_empty(&ctx->inbufq) && /* and we consumed our input */
         !Curl_bufq_is_full(&ctx->tunnel.recvbuf)) {
@@ -472,7 +470,6 @@ static CURLcode h2_progress_ingress(struct Curl_cfilter *cf,
       break;
     }
 
-    keep_reading = Curl_bufq_is_full(&ctx->inbufq);
     if(h2_process_pending_input(cf, data, &result))
       return result;
   }