This is an automated email from the ASF dual-hosted git repository. bneradt pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push: new e6a8ac335e Update quiche to 0.22.0. (#11493) e6a8ac335e is described below commit e6a8ac335e819f2849fa5581774861e4cbc346d3 Author: Damian Meden <dme...@apache.org> AuthorDate: Tue Jul 16 01:16:51 2024 +0200 Update quiche to 0.22.0. (#11493) This bumps the quiche version from the build deps scripts and update the code to use the changed API from quic: - quiche_conn_stream_recv - quiche_conn_stream_send which now takes an extra param to get the detected error(if any). --- include/iocore/net/quic/QUICStream.h | 2 ++ src/iocore/net/quic/QUICStream.cc | 18 +++++++++++------- tools/build_boringssl_h3_tools.sh | 4 +++- tools/build_openssl_h3_tools.sh | 4 +++- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/include/iocore/net/quic/QUICStream.h b/include/iocore/net/quic/QUICStream.h index 90975e0d02..82481096ed 100644 --- a/include/iocore/net/quic/QUICStream.h +++ b/include/iocore/net/quic/QUICStream.h @@ -42,6 +42,8 @@ class QUICStreamStateListener; class QUICStream { public: + using ErrorCode = uint64_t; //!< recv/send stream application error codes. + QUICStream() {} QUICStream(QUICConnectionInfoProvider *cinfo, QUICStreamId sid); ~QUICStream(); diff --git a/src/iocore/net/quic/QUICStream.cc b/src/iocore/net/quic/QUICStream.cc index b01e4d1280..fcdfc7e88e 100644 --- a/src/iocore/net/quic/QUICStream.cc +++ b/src/iocore/net/quic/QUICStream.cc @@ -96,11 +96,13 @@ QUICStream::on_eos() void QUICStream::receive_data(quiche_conn *quiche_con) { - uint8_t buf[4096]; - bool fin; - ssize_t read_len = 0; + uint8_t buf[4096]; + bool fin; + ssize_t read_len = 0; + [[maybe_unused]] ErrorCode error_code{0}; // Only set if QUICHE_ERR_STREAM_STOPPED(-15) or QUICHE_ERR_STREAM_RESET(-16) are + // returned by quiche_conn_stream_recv. - while ((read_len = quiche_conn_stream_recv(quiche_con, this->_id, buf, sizeof(buf), &fin)) > 0) { + while ((read_len = quiche_conn_stream_recv(quiche_con, this->_id, buf, sizeof(buf), &fin, &error_code)) > 0) { this->_adapter->write(this->_received_bytes, buf, read_len, fin); this->_received_bytes += read_len; } @@ -112,8 +114,10 @@ QUICStream::receive_data(quiche_conn *quiche_con) void QUICStream::send_data(quiche_conn *quiche_con) { - bool fin = false; - ssize_t len = 0; + bool fin = false; + ssize_t len = 0; + [[maybe_unused]] ErrorCode error_code{0}; // Only set if QUICHE_ERR_STREAM_STOPPED(-15) or QUICHE_ERR_STREAM_RESET(-16) are + // returned by quiche_conn_stream_send. len = quiche_conn_stream_capacity(quiche_con, this->_id); if (len <= 0) { @@ -125,7 +129,7 @@ QUICStream::send_data(quiche_conn *quiche_con) } if (block->size() > 0 || fin) { ssize_t written_len = - quiche_conn_stream_send(quiche_con, this->_id, reinterpret_cast<uint8_t *>(block->start()), block->size(), fin); + quiche_conn_stream_send(quiche_con, this->_id, reinterpret_cast<uint8_t *>(block->start()), block->size(), fin, &error_code); if (written_len >= 0) { this->_sent_bytes += written_len; } diff --git a/tools/build_boringssl_h3_tools.sh b/tools/build_boringssl_h3_tools.sh index 9dc22878bb..8c5979619f 100755 --- a/tools/build_boringssl_h3_tools.sh +++ b/tools/build_boringssl_h3_tools.sh @@ -171,12 +171,14 @@ echo "Building quiche" QUICHE_BASE="${BASE:-/opt}/quiche" [ ! -d quiche ] && git clone https://github.com/cloudflare/quiche.git cd quiche -git checkout 0.21.0 +git checkout 0.22.0 QUICHE_BSSL_PATH=${BORINGSSL_LIB_PATH} QUICHE_BSSL_LINK_KIND=dylib cargo build -j4 --package quiche --release --features ffi,pkg-config-meta,qlog sudo mkdir -p ${QUICHE_BASE}/lib/pkgconfig sudo mkdir -p ${QUICHE_BASE}/include sudo cp target/release/libquiche.a ${QUICHE_BASE}/lib/ [ -f target/release/libquiche.so ] && sudo cp target/release/libquiche.so ${QUICHE_BASE}/lib/ +# Why a link? https://github.com/cloudflare/quiche/issues/1808#issuecomment-2196233378 +sudo ln -s ${QUICHE_BASE}/lib/libquiche.so ${QUICHE_BASE}/lib/libquiche.so.0 sudo cp quiche/include/quiche.h ${QUICHE_BASE}/include/ sudo cp target/release/quiche.pc ${QUICHE_BASE}/lib/pkgconfig sudo chmod -R a+rX ${BASE} diff --git a/tools/build_openssl_h3_tools.sh b/tools/build_openssl_h3_tools.sh index cc4d358b75..0f4c5c4f26 100755 --- a/tools/build_openssl_h3_tools.sh +++ b/tools/build_openssl_h3_tools.sh @@ -120,7 +120,7 @@ echo "Building quiche" QUICHE_BASE="${BASE:-/opt}/quiche" [ ! -d quiche ] && git clone https://github.com/cloudflare/quiche.git cd quiche -git checkout 0.21.0 +git checkout 0.22.0 PKG_CONFIG_PATH="$OPENSSL_LIB"/pkgconfig LD_LIBRARY_PATH="$OPENSSL_LIB" \ cargo build -j4 --package quiche --release --features ffi,pkg-config-meta,qlog,openssl @@ -129,6 +129,8 @@ sudo mkdir -p ${QUICHE_BASE}/lib/pkgconfig sudo mkdir -p ${QUICHE_BASE}/include sudo cp target/release/libquiche.a ${QUICHE_BASE}/lib/ [ -f target/release/libquiche.so ] && sudo cp target/release/libquiche.so ${QUICHE_BASE}/lib/ +# Why a link? https://github.com/cloudflare/quiche/issues/1808#issuecomment-2196233378 +sudo ln -s ${QUICHE_BASE}/lib/libquiche.so ${QUICHE_BASE}/lib/libquiche.so.0 sudo cp quiche/include/quiche.h ${QUICHE_BASE}/include/ sudo cp target/release/quiche.pc ${QUICHE_BASE}/lib/pkgconfig sudo chmod -R a+rX ${BASE}