Skip to content

Commit 10e0dad

Browse files
committed
Release 2.29.5
- Fix a few issues detected by h3spec for better compliance with HTTP/3 standard.
1 parent e1b8f1a commit 10e0dad

File tree

7 files changed

+35
-14
lines changed

7 files changed

+35
-14
lines changed

CHANGELOG

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
2021-03-17
2+
- 2.29.5
3+
- Fix a few issues detected by h3spec for better compliance with HTTP/3
4+
standard.
5+
16
2021-03-08
27
- 2.29.4
38
- [BUGFIX] Infinite loop in stream: returned HQ frame can be at any

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
# The short X.Y version
2727
version = u'2.29'
2828
# The full version, including alpha/beta/rc tags
29-
release = u'2.29.4'
29+
release = u'2.29.5'
3030

3131

3232
# -- General configuration ---------------------------------------------------

include/lsquic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extern "C" {
2525

2626
#define LSQUIC_MAJOR_VERSION 2
2727
#define LSQUIC_MINOR_VERSION 29
28-
#define LSQUIC_PATCH_VERSION 4
28+
#define LSQUIC_PATCH_VERSION 5
2929

3030
/**
3131
* Engine flags:

src/liblsquic/lsquic_full_conn_ietf.c

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6393,6 +6393,13 @@ process_new_token_frame (struct ietf_full_conn *conn,
63936393
return 0;
63946394
}
63956395

6396+
if (conn->ifc_flags & IFC_SERVER)
6397+
{ /* [draft-ietf-quic-transport-34] Section 19.7 */
6398+
ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION,
6399+
"received unexpected NEW_TOKEN frame");
6400+
return 0;
6401+
}
6402+
63966403
if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)
63976404
|| LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT))
63986405
{
@@ -6858,17 +6865,22 @@ parse_regular_packet (struct ietf_full_conn *conn,
68586865
p = packet_in->pi_data + packet_in->pi_header_sz;
68596866
pend = packet_in->pi_data + packet_in->pi_data_sz;
68606867

6861-
while (p < pend)
6862-
{
6863-
len = process_packet_frame(conn, packet_in, p, pend - p);
6864-
if (len > 0)
6865-
p += len;
6866-
else
6868+
if (p < pend)
6869+
do
68676870
{
6868-
ABORT_ERROR("Error parsing frame");
6869-
break;
6871+
len = process_packet_frame(conn, packet_in, p, pend - p);
6872+
if (len > 0)
6873+
p += len;
6874+
else
6875+
{
6876+
ABORT_ERROR("Error parsing frame");
6877+
break;
6878+
}
68706879
}
6871-
}
6880+
while (p < pend);
6881+
else
6882+
ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION,
6883+
"packet %"PRIu64" has no frames", packet_in->pi_packno);
68726884
}
68736885

68746886

@@ -8959,7 +8971,8 @@ on_settings_frame (void *ctx)
89598971
LSQ_DEBUG("SETTINGS frame");
89608972
if (conn->ifc_flags & IFC_HAVE_PEER_SET)
89618973
{
8962-
ABORT_WARN("second incoming SETTING frame on HTTP control stream");
8974+
ABORT_QUIETLY(1, HEC_FRAME_UNEXPECTED,
8975+
"second incoming SETTING frame on HTTP control stream");
89638976
return;
89648977
}
89658978

src/liblsquic/lsquic_qdec_hdl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ qdh_read_encoder_stream (void *ctx, const unsigned char *buf, size_t sz,
380380
LSQ_INFO("error reading encoder stream");
381381
qerr = lsqpack_dec_get_err_info(&qdh->qdh_decoder);
382382
qdh->qdh_conn->cn_if->ci_abort_error(qdh->qdh_conn, 1,
383-
HEC_QPACK_DECODER_STREAM_ERROR, "Error interpreting QPACK encoder "
383+
HEC_QPACK_ENCODER_STREAM_ERROR, "Error interpreting QPACK encoder "
384384
"stream; offset %"PRIu64", line %d", qerr->off, qerr->line);
385385
goto end;
386386
}

src/liblsquic/lsquic_trans_params.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ static const uint64_t max_vals[MAX_NUMERIC_TPI + 1] =
153153
* it is not required by the spec and is not necessary.
154154
*/
155155
[TPI_MAX_UDP_PAYLOAD_SIZE] = VINT_MAX_VALUE,
156-
[TPI_ACK_DELAY_EXPONENT] = VINT_MAX_VALUE,
156+
[TPI_ACK_DELAY_EXPONENT] = TP_MAX_ACK_DELAY_EXP,
157157
[TPI_INIT_MAX_STREAMS_UNI] = 1ull << 60,
158158
[TPI_INIT_MAX_STREAMS_BIDI] = 1ull << 60,
159159
[TPI_INIT_MAX_DATA] = VINT_MAX_VALUE,

src/liblsquic/lsquic_trans_params.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ struct transport_params
128128
#define TP_DEF_MAX_ACK_DELAY 25u
129129
#define TP_DEF_ACTIVE_CONNECTION_ID_LIMIT 2
130130

131+
/* [draft-ietf-quic-transport-34], Section 18.2 */
132+
#define TP_MAX_ACK_DELAY_EXP 20
133+
131134
/* [draft-ietf-quic-transport-18], Section 18.1 */
132135
#define TP_MAX_MAX_ACK_DELAY ((1u << 14) - 1)
133136

0 commit comments

Comments
 (0)