mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Release 4.0.7
This commit is contained in:
parent
851b0b0a57
commit
f416a13afe
7 changed files with 158 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2024-02-28
|
||||||
|
- 4.0.7
|
||||||
|
- Fix overly strict 0-RTT packet DCID validation.
|
||||||
|
- Update docker build.
|
||||||
|
|
||||||
2024-02-23
|
2024-02-23
|
||||||
- 4.0.6
|
- 4.0.6
|
||||||
- Fix ACK handling.
|
- Fix ACK handling.
|
||||||
|
|
11
Dockerfile
11
Dockerfile
|
@ -1,4 +1,4 @@
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04 as build-lsquic
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
@ -25,8 +25,15 @@ RUN git clone https://github.com/google/boringssl.git && \
|
||||||
cmake . && \
|
cmake . && \
|
||||||
make
|
make
|
||||||
|
|
||||||
|
ENV EXTRA_CFLAGS -DLSQUIC_QIR=1
|
||||||
RUN cd /src/lsquic && \
|
RUN cd /src/lsquic && \
|
||||||
cmake -DBORINGSSL_DIR=/src/boringssl . && \
|
cmake -DBORINGSSL_DIR=/src/boringssl . && \
|
||||||
make
|
make
|
||||||
|
|
||||||
RUN cd lsquic && make test && cp bin/http_client /usr/bin/ && cp bin/http_server /usr/bin
|
RUN cd lsquic && cp bin/http_client /usr/bin/ && cp bin/http_server /usr/bin
|
||||||
|
|
||||||
|
FROM martenseemann/quic-network-simulator-endpoint:latest as lsquic-qir
|
||||||
|
COPY --from=build-lsquic /usr/bin/http_client /usr/bin/http_server /usr/bin/
|
||||||
|
COPY qir/run_endpoint.sh .
|
||||||
|
RUN chmod +x run_endpoint.sh
|
||||||
|
ENTRYPOINT [ "./run_endpoint.sh" ]
|
||||||
|
|
|
@ -111,8 +111,7 @@ as follows:
|
||||||
```
|
```
|
||||||
git clone https://github.com/litespeedtech/lsquic.git
|
git clone https://github.com/litespeedtech/lsquic.git
|
||||||
cd lsquic
|
cd lsquic
|
||||||
git submodule init
|
git submodule update --init
|
||||||
git submodule update
|
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Compile the library
|
2. Compile the library
|
||||||
|
@ -147,8 +146,7 @@ The library and the example client and server can be built with Docker.
|
||||||
Initialize Git submodules:
|
Initialize Git submodules:
|
||||||
```
|
```
|
||||||
cd lsquic
|
cd lsquic
|
||||||
git submodule init
|
git submodule update --init
|
||||||
git submodule update
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Build the Docker image:
|
Build the Docker image:
|
||||||
|
|
|
@ -26,7 +26,7 @@ author = u'LiteSpeed Technologies'
|
||||||
# The short X.Y version
|
# The short X.Y version
|
||||||
version = u'4.0'
|
version = u'4.0'
|
||||||
# The full version, including alpha/beta/rc tags
|
# The full version, including alpha/beta/rc tags
|
||||||
release = u'4.0.6'
|
release = u'4.0.7'
|
||||||
|
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
|
@ -27,7 +27,7 @@ extern "C" {
|
||||||
|
|
||||||
#define LSQUIC_MAJOR_VERSION 4
|
#define LSQUIC_MAJOR_VERSION 4
|
||||||
#define LSQUIC_MINOR_VERSION 0
|
#define LSQUIC_MINOR_VERSION 0
|
||||||
#define LSQUIC_PATCH_VERSION 6
|
#define LSQUIC_PATCH_VERSION 7
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Engine flags:
|
* Engine flags:
|
||||||
|
|
139
qir/run_endpoint.sh
Normal file
139
qir/run_endpoint.sh
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# run_endpoint.sh -- QUIC Interop Runner script for lsquic
|
||||||
|
#
|
||||||
|
|
||||||
|
/setup.sh
|
||||||
|
|
||||||
|
if [ "$ROLE" == "client" ]; then
|
||||||
|
# Wait for the simulator to start up.
|
||||||
|
/wait-for-it.sh sim:57832 -s -t 30
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo TEST_PARAMS: $TEST_PARAMS
|
||||||
|
echo REQUESTS: "'$REQUESTS'"
|
||||||
|
eval $(perl <<'PERL'
|
||||||
|
@paths = split /\s+/, $ENV{REQUESTS};
|
||||||
|
s~^https?://[^/]+~-p ~ for @paths;
|
||||||
|
print "PATHS='@paths'\n";
|
||||||
|
$server = $ENV{REQUESTS};
|
||||||
|
$server =~ s~^https?://~~;
|
||||||
|
$server =~ s~/.*~~;
|
||||||
|
($server, $port) = split /:/, $server;
|
||||||
|
print "SERVER=$server\n";
|
||||||
|
print "PORT=$port\n";
|
||||||
|
print "N_REQS=", scalar(@paths), "\n";
|
||||||
|
print "N_reqs=", scalar(@paths), "\n";
|
||||||
|
if (@paths > 100) {
|
||||||
|
print "W=100\n";
|
||||||
|
} else {
|
||||||
|
print "W=1\n";
|
||||||
|
}
|
||||||
|
PERL
|
||||||
|
)
|
||||||
|
echo paths: $PATHS
|
||||||
|
echo server: $SERVER
|
||||||
|
echo port: $PORT
|
||||||
|
|
||||||
|
# lsquic command-line tools create one file per connection when -G option
|
||||||
|
# is used. Here we make a copy and give it required name.
|
||||||
|
#
|
||||||
|
function maybe_create_keylog() {
|
||||||
|
local NAME=/logs/keys.log
|
||||||
|
if ls /logs/*.keys; then
|
||||||
|
# There may be more than one of these, as one file is created per
|
||||||
|
# connection.
|
||||||
|
cat /logs/*.keys > $NAME
|
||||||
|
fi
|
||||||
|
if [ -f $NAME ]; then
|
||||||
|
echo $NAME exists
|
||||||
|
else
|
||||||
|
echo $NAME does not exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$ROLE" = server ]; then
|
||||||
|
if [ ! -z "$TESTCASE" ]; then
|
||||||
|
case "$TESTCASE" in
|
||||||
|
http3)
|
||||||
|
VERSIONS='-o version=h3-29 -o version=h3'
|
||||||
|
;;
|
||||||
|
v2)
|
||||||
|
VERSIONS='-o version=h3-v2 -o version=h3 -Q hq-interop'
|
||||||
|
;;
|
||||||
|
handshake|transfer|longrtt|resumption|blackhole|multiconnect|chacha20|zerortt)
|
||||||
|
VERSIONS='-o version=h3-29 -o version=h3 -o scid_iss_rate=0 -Q hq-interop'
|
||||||
|
;;
|
||||||
|
retry)
|
||||||
|
VERSIONS='-o version=h3-29 -o version=h3 -o srej=1 -Q hq-interop'
|
||||||
|
FORCE_RETRY=1
|
||||||
|
;;
|
||||||
|
ecn)
|
||||||
|
VERSIONS='-o version=h3-29 -o version=h3 -Q hq-interop'
|
||||||
|
ECN='-o ecn=1'
|
||||||
|
;;
|
||||||
|
*) exit 127 ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
echo SERVER_PARAMS: $SERVER_PARAMS
|
||||||
|
exec env LSQUIC_FORCE_RETRY=$FORCE_RETRY /usr/bin/http_server $VERSIONS $ECN \
|
||||||
|
-c server,/certs/cert.pem,/certs/priv.key \
|
||||||
|
-c server4,/certs/cert.pem,/certs/priv.key \
|
||||||
|
-c server6,/certs/cert.pem,/certs/priv.key \
|
||||||
|
-c server46,/certs/cert.pem,/certs/priv.key \
|
||||||
|
-s ::0:443 -s 0.0.0.0:443 -s 193.167.100.100:12345 \
|
||||||
|
-r /www -L debug 2>/logs/$TESTCASE.out
|
||||||
|
elif [ "$ROLE" = debug-server ]; then
|
||||||
|
exec /usr/bin/http_server $SERVER_PARAMS
|
||||||
|
elif [ "$ROLE" = client ]; then
|
||||||
|
if [ ! -z "$TESTCASE" ]; then
|
||||||
|
case "$TESTCASE" in
|
||||||
|
http3)
|
||||||
|
VERSIONS='-o version=h3'
|
||||||
|
;;
|
||||||
|
v2)
|
||||||
|
VERSIONS='-o version=h3-v2 -o version=h3 -Q hq-interop'
|
||||||
|
;;
|
||||||
|
handshake|transfer|longrtt|retry|multiplexing|blackhole)
|
||||||
|
VERSIONS='-o version=h3 -Q hq-interop'
|
||||||
|
;;
|
||||||
|
multiconnect)
|
||||||
|
VERSIONS='-o version=h3 -Q hq-interop'
|
||||||
|
N_REQS=1
|
||||||
|
;;
|
||||||
|
ecn)
|
||||||
|
VERSIONS='-o version=h3 -Q hq-interop'
|
||||||
|
ECN='-o ecn=1'
|
||||||
|
;;
|
||||||
|
resumption)
|
||||||
|
VERSIONS='-o version=h3 -Q hq-interop'
|
||||||
|
RESUME='-0 /logs/resume.file'
|
||||||
|
;;
|
||||||
|
*) exit 127 ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
echo CLIENT_PARAMS: $CLIENT_PARAMS
|
||||||
|
if [ "$TESTCASE" = resumption ]; then
|
||||||
|
# Fetch first file:
|
||||||
|
/usr/bin/http_client $VERSIONS -s $SERVER:$PORT $PATHS \
|
||||||
|
-r 1 -R 1 $RESUME \
|
||||||
|
-B -7 /downloads -G /logs \
|
||||||
|
-L debug 2>/logs/$TESTCASE-req1.out || exit $?
|
||||||
|
PATHS=`echo "$PATHS" | sed 's~-p /[^ ]* ~~'`
|
||||||
|
N_REQS=1
|
||||||
|
N_reqs=1
|
||||||
|
W=1
|
||||||
|
echo "first request successful, new args: $N_REQS; $N_reqs; $PATHS"
|
||||||
|
fi
|
||||||
|
/usr/bin/http_client $VERSIONS -s $SERVER:$PORT $PATHS \
|
||||||
|
-r $N_reqs -R $N_REQS -w $W $ECN $RESUME \
|
||||||
|
-B -7 /downloads -G /logs \
|
||||||
|
-L debug 2>/logs/$TESTCASE.out
|
||||||
|
EXIT_CODE=$?
|
||||||
|
maybe_create_keylog
|
||||||
|
sync
|
||||||
|
exit $EXIT_CODE
|
||||||
|
else
|
||||||
|
echo hi
|
||||||
|
exit 127
|
||||||
|
fi
|
|
@ -7524,7 +7524,7 @@ process_regular_packet (struct ietf_full_conn *conn,
|
||||||
packet_in);
|
packet_in);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (is_dcid_changed)
|
if (is_dcid_changed && HETY_0RTT != packet_in->pi_header_type)
|
||||||
{
|
{
|
||||||
if (LSQUIC_CIDS_EQ(&conn->ifc_conn.cn_cces[0].cce_cid,
|
if (LSQUIC_CIDS_EQ(&conn->ifc_conn.cn_cces[0].cce_cid,
|
||||||
&packet_in->pi_dcid)
|
&packet_in->pi_dcid)
|
||||||
|
|
Loading…
Reference in a new issue