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 <[email protected]>
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}