Skip to content

Commit e1b8f1a

Browse files
author
Dmitri Tikhonov
committed
Release 2.29.4
- [BUGFIX] Infinite loop in stream: returned HQ frame can be at any point on the list. - [BUGFIX] Fail push promise immediately if STREAM_NOPUSH is set.
1 parent 99a1ad0 commit e1b8f1a

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

CHANGELOG

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2021-03-08
2+
- 2.29.4
3+
- [BUGFIX] Infinite loop in stream: returned HQ frame can be at any
4+
point on the list.
5+
- [BUGFIX] Fail push promise immediately if STREAM_NOPUSH is set.
6+
17
2021-03-03
28
- 2.29.3
39
- [BUGFIX] Do not send RESET_STREAM if writing to stream is already

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.3'
29+
release = u'2.29.4'
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 3
28+
#define LSQUIC_PATCH_VERSION 4
2929

3030
/**
3131
* Engine flags:

src/liblsquic/lsquic_stream.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2669,8 +2669,8 @@ static void
26692669
stream_hq_frame_put (struct lsquic_stream *stream,
26702670
struct stream_hq_frame *shf)
26712671
{
2672-
assert(STAILQ_FIRST(&stream->sm_hq_frames) == shf);
2673-
STAILQ_REMOVE_HEAD(&stream->sm_hq_frames, shf_next);
2672+
/* In vast majority of cases, the frame to put is at the head: */
2673+
STAILQ_REMOVE(&stream->sm_hq_frames, shf, stream_hq_frame, shf_next);
26742674
if (frame_in_stream(stream, shf))
26752675
memset(shf, 0, sizeof(*shf));
26762676
else
@@ -5383,7 +5383,9 @@ lsquic_stream_push_promise (struct lsquic_stream *stream,
53835383
ssize_t nw;
53845384

53855385
assert(stream->sm_bflags & SMBF_IETF);
5386-
assert(lsquic_stream_can_push(stream));
5386+
5387+
if (stream->stream_flags & STREAM_NOPUSH)
5388+
return -1;
53875389

53885390
bits = vint_val2bits(promise->pp_id);
53895391
len = 1 << bits;

0 commit comments

Comments
 (0)