mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Release 2.10.6
- [BUGFIX] HTTP/3 framing: don't misinterpret rare occurence as error. - [BUGFIX] Send gap warning due to missing poisoned packet.
This commit is contained in:
parent
35ac25bb73
commit
aa82021170
5 changed files with 25 additions and 13 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2020-02-14
|
||||||
|
- 2.10.6
|
||||||
|
- [BUGFIX] HTTP/3 framing: don't misinterpret rare occurence as error.
|
||||||
|
- [BUGFIX] Send gap warning due to missing poisoned packet.
|
||||||
|
- Stream unit test for scenario in issue #106.
|
||||||
|
|
||||||
2020-02-13
|
2020-02-13
|
||||||
- 2.10.5
|
- 2.10.5
|
||||||
- [BUGFIX] BBR: call cci_sent() with correct arguments and at correct
|
- [BUGFIX] BBR: call cci_sent() with correct arguments and at correct
|
||||||
|
|
|
@ -25,7 +25,7 @@ extern "C" {
|
||||||
|
|
||||||
#define LSQUIC_MAJOR_VERSION 2
|
#define LSQUIC_MAJOR_VERSION 2
|
||||||
#define LSQUIC_MINOR_VERSION 10
|
#define LSQUIC_MINOR_VERSION 10
|
||||||
#define LSQUIC_PATCH_VERSION 5
|
#define LSQUIC_PATCH_VERSION 6
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Engine flags:
|
* Engine flags:
|
||||||
|
|
|
@ -644,7 +644,7 @@ lsquic_send_ctl_sent_packet (lsquic_send_ctl_t *ctl,
|
||||||
assert(!(packet_out->po_flags & PO_ENCRYPTED));
|
assert(!(packet_out->po_flags & PO_ENCRYPTED));
|
||||||
ctl->sc_last_sent_time = packet_out->po_sent;
|
ctl->sc_last_sent_time = packet_out->po_sent;
|
||||||
pns = lsquic_packet_out_pns(packet_out);
|
pns = lsquic_packet_out_pns(packet_out);
|
||||||
if (packet_out->po_packno == ctl->sc_gap + 1 && pns == PNS_APP)
|
if (packet_out->po_packno == ctl->sc_gap + 1)
|
||||||
{
|
{
|
||||||
assert(!(ctl->sc_flags & SC_POISON));
|
assert(!(ctl->sc_flags & SC_POISON));
|
||||||
lsquic_senhist_add(&ctl->sc_senhist, ctl->sc_gap);
|
lsquic_senhist_add(&ctl->sc_senhist, ctl->sc_gap);
|
||||||
|
|
|
@ -3021,12 +3021,8 @@ maybe_close_varsize_hq_frame (struct lsquic_stream *stream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!shf->shf_frame_ptr)
|
else if (!shf->shf_frame_ptr)
|
||||||
{
|
LSQ_DEBUG("HQ frame of type 0x%X has not yet been written, not "
|
||||||
LSQ_ERROR("dangling HTTP/3 frame, on stream %"PRIu64, stream->id);
|
"closing", shf->shf_frame_type);
|
||||||
stream->conn_pub->lconn->cn_if->ci_internal_error(
|
|
||||||
stream->conn_pub->lconn, "dangling HTTP/3 frame");
|
|
||||||
stream_hq_frame_put(stream, shf);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
assert(stream->sm_n_buffered);
|
assert(stream->sm_n_buffered);
|
||||||
|
|
|
@ -722,7 +722,8 @@ fuzz_guided_testing (const char *input)
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_frame_header_split (unsigned n_packets)
|
test_frame_header_split (unsigned n_packets, unsigned extra_sz,
|
||||||
|
int add_one_more)
|
||||||
{
|
{
|
||||||
struct test_objs tobjs;
|
struct test_objs tobjs;
|
||||||
struct lsquic_stream *stream;
|
struct lsquic_stream *stream;
|
||||||
|
@ -771,7 +772,7 @@ test_frame_header_split (unsigned n_packets)
|
||||||
const size_t pad_size = packet_out->po_n_alloc
|
const size_t pad_size = packet_out->po_n_alloc
|
||||||
- 2 /* STREAM header */
|
- 2 /* STREAM header */
|
||||||
- 5 /* 3-byte HEADERS frame */
|
- 5 /* 3-byte HEADERS frame */
|
||||||
- 2;
|
- extra_sz;
|
||||||
packet_out->po_data_sz = pad_size;
|
packet_out->po_data_sz = pad_size;
|
||||||
lsquic_send_ctl_scheduled_one(&tobjs.send_ctl, packet_out);
|
lsquic_send_ctl_scheduled_one(&tobjs.send_ctl, packet_out);
|
||||||
|
|
||||||
|
@ -784,6 +785,12 @@ test_frame_header_split (unsigned n_packets)
|
||||||
assert(w >= 0 && (size_t) w == buf_in_sz);
|
assert(w >= 0 && (size_t) w == buf_in_sz);
|
||||||
lsquic_stream_flush(stream);
|
lsquic_stream_flush(stream);
|
||||||
|
|
||||||
|
if (add_one_more)
|
||||||
|
{
|
||||||
|
++g_ctl_settings.tcs_can_send;
|
||||||
|
lsquic_stream_flush(stream);
|
||||||
|
}
|
||||||
|
|
||||||
/* Verify written data: */
|
/* Verify written data: */
|
||||||
nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz,
|
nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz,
|
||||||
0, &fin, 1);
|
0, &fin, 1);
|
||||||
|
@ -953,7 +960,8 @@ int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
const char *fuzz_input = NULL;
|
const char *fuzz_input = NULL;
|
||||||
int opt;
|
int opt, add_one_more;
|
||||||
|
unsigned n_packets, extra_sz;
|
||||||
|
|
||||||
lsquic_global_init(LSQUIC_GLOBAL_SERVER);
|
lsquic_global_init(LSQUIC_GLOBAL_SERVER);
|
||||||
|
|
||||||
|
@ -980,8 +988,10 @@ main (int argc, char **argv)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
main_test_hq_framing();
|
main_test_hq_framing();
|
||||||
test_frame_header_split(1);
|
for (n_packets = 1; n_packets <= 2; ++n_packets)
|
||||||
test_frame_header_split(2);
|
for (extra_sz = 0; extra_sz <= 2; ++extra_sz)
|
||||||
|
for (add_one_more = 0; add_one_more <= 1; ++add_one_more)
|
||||||
|
test_frame_header_split(n_packets, extra_sz, add_one_more);
|
||||||
test_zero_size_frame();
|
test_zero_size_frame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue