Commit 22753277 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

nghttpx: Fix the issue that forwarded h3 GET request always has chunked TE

parent 02a56493
...@@ -114,8 +114,9 @@ jobs: ...@@ -114,8 +114,9 @@ jobs:
- name: Build nghttp3 - name: Build nghttp3
if: matrix.http3 == 'http3' if: matrix.http3 == 'http3'
run: | run: |
git clone --depth 1 -b v0.1.1 https://github.com/ngtcp2/nghttp3 git clone https://github.com/ngtcp2/nghttp3
cd nghttp3 cd nghttp3
git checkout 207318c92e0578ac393c31dcd797e4a4dca3e31a
autoreconf -i autoreconf -i
./configure --prefix=$PWD/build --enable-lib-only ./configure --prefix=$PWD/build --enable-lib-only
make -j$(nproc) check make -j$(nproc) check
......
...@@ -366,8 +366,9 @@ Build nghttp3: ...@@ -366,8 +366,9 @@ Build nghttp3:
.. code-block:: text .. code-block:: text
$ git clone --depth 1 -b v0.1.1 https://github.com/ngtcp2/nghttp3 $ git clone https://github.com/ngtcp2/nghttp3
$ cd nghttp3 $ cd nghttp3
$ git checkout 207318c92e0578ac393c31dcd797e4a4dca3e31a
$ autoreconf -i $ autoreconf -i
$ ./configure --prefix=$PWD/build --enable-lib-only $ ./configure --prefix=$PWD/build --enable-lib-only
$ make -j$(nproc) $ make -j$(nproc)
......
...@@ -1998,7 +1998,7 @@ int Http3Upstream::http_recv_request_header(Downstream *downstream, ...@@ -1998,7 +1998,7 @@ int Http3Upstream::http_recv_request_header(Downstream *downstream,
} }
namespace { namespace {
int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id, int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id, int fin,
void *user_data, void *stream_user_data) { void *user_data, void *stream_user_data) {
auto upstream = static_cast<Http3Upstream *>(user_data); auto upstream = static_cast<Http3Upstream *>(user_data);
auto handler = upstream->get_client_handler(); auto handler = upstream->get_client_handler();
...@@ -2008,7 +2008,7 @@ int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id, ...@@ -2008,7 +2008,7 @@ int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id,
return 0; return 0;
} }
if (upstream->http_end_request_headers(downstream) != 0) { if (upstream->http_end_request_headers(downstream, fin) != 0) {
return NGHTTP3_ERR_CALLBACK_FAILURE; return NGHTTP3_ERR_CALLBACK_FAILURE;
} }
...@@ -2019,7 +2019,7 @@ int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id, ...@@ -2019,7 +2019,7 @@ int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id,
} }
} // namespace } // namespace
int Http3Upstream::http_end_request_headers(Downstream *downstream) { int Http3Upstream::http_end_request_headers(Downstream *downstream, int fin) {
auto lgconf = log_config(); auto lgconf = log_config();
lgconf->update_tstamp(std::chrono::system_clock::now()); lgconf->update_tstamp(std::chrono::system_clock::now());
auto &req = downstream->request(); auto &req = downstream->request();
...@@ -2115,8 +2115,11 @@ int Http3Upstream::http_end_request_headers(Downstream *downstream) { ...@@ -2115,8 +2115,11 @@ int Http3Upstream::http_end_request_headers(Downstream *downstream) {
req.connect_proto = ConnectProto::WEBSOCKET; req.connect_proto = ConnectProto::WEBSOCKET;
} }
// We are not sure that request has body or not at the moment. if (!fin) {
req.http2_expect_body = true; req.http2_expect_body = true;
} else if (req.fs.content_length == -1) {
req.fs.content_length = 0;
}
downstream->inspect_http2_request(); downstream->inspect_http2_request();
......
...@@ -125,7 +125,7 @@ public: ...@@ -125,7 +125,7 @@ public:
int http_recv_request_header(Downstream *downstream, int32_t token, int http_recv_request_header(Downstream *downstream, int32_t token,
nghttp3_rcbuf *name, nghttp3_rcbuf *value, nghttp3_rcbuf *name, nghttp3_rcbuf *value,
uint8_t flags); uint8_t flags);
int http_end_request_headers(Downstream *downstream); int http_end_request_headers(Downstream *downstream, int fin);
int http_end_stream(Downstream *downstream); int http_end_stream(Downstream *downstream);
void start_downstream(Downstream *downstream); void start_downstream(Downstream *downstream);
void initiate_downstream(Downstream *downstream); void initiate_downstream(Downstream *downstream);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment