From: Stefan Eissing Date: Thu, 27 Jul 2023 10:59:03 +0000 (+0200) Subject: http2: fix in h2 proxy tunnel: progress in ingress on sending X-Git-Tag: curl-8_3_0~291 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a05cce74f912c63fa9afb11d6d0abafd52853970;p=thirdparty%2Fcurl.git http2: fix in h2 proxy tunnel: progress in ingress on sending - depending on what is tunneled, the proxy may never get invoked for receiving data explicitly. Not progressing ingress may lead to stalls due to missed WINDOW_UPDATEs. CI: - add a chache for building mod_h2 Closes #11527 --- diff --git a/.github/workflows/ngtcp2-linux.yml b/.github/workflows/ngtcp2-linux.yml index d14872c93c..186fd5a606 100644 --- a/.github/workflows/ngtcp2-linux.yml +++ b/.github/workflows/ngtcp2-linux.yml @@ -158,12 +158,27 @@ jobs: make install name: 'install nghttp2' - - run: | - git clone --quiet --depth=1 -b master https://github.com/icing/mod_h2 + - name: cache mod_h2 + uses: actions/cache@v3 + id: cache-mod_h2 + env: + cache-name: cache-mod_h2 + with: + path: /home/runner/mod_h2 + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }} + + - if: steps.cache-mod_h2.outputs.cache-hit != 'true' + run: | + cd $HOME + git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2 cd mod_h2 autoreconf -fi ./configure make + name: 'build mod_h2' + + - run: | + cd $HOME/mod_h2 sudo make install name: 'install mod_h2' diff --git a/lib/cf-h2-proxy.c b/lib/cf-h2-proxy.c index f6acfc5202..dd2c00d51a 100644 --- a/lib/cf-h2-proxy.c +++ b/lib/cf-h2-proxy.c @@ -1309,6 +1309,13 @@ static ssize_t cf_h2_proxy_send(struct Curl_cfilter *cf, } } + result = proxy_h2_progress_ingress(cf, data); + if(result) { + *err = result; + nwritten = -1; + goto out; + } + /* Call the nghttp2 send loop and flush to write ALL buffered data, * headers and/or request body completely out to the network */ result = proxy_h2_progress_egress(cf, data);