Skip to content

Commit eea9989

Browse files
author
Dmitri Tikhonov
committed
Release 2.29.6
- Documentation: describe lsquic internals ("guts"). - Two more fixes to compliance issues found by h3spec. - Truncate, don't abort, SCIDs larger than 16 bytes (PR #244). - Several small internal improvements and space optimizations.
1 parent f3690fd commit eea9989

19 files changed

+3129
-49
lines changed

CHANGELOG

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2021-03-31
2+
- 2.29.6
3+
- Documentation: describe lsquic internals ("guts").
4+
- Two more fixes to compliance issues found by h3spec.
5+
- Truncate, don't abort, SCIDs larger than 16 bytes (PR #244).
6+
- Several small internal improvements and space optimizations.
7+
18
2021-03-17
29
- 2.29.5
310
- Fix a few issues detected by h3spec for better compliance with HTTP/3

bin/http_server.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,11 @@ struct req
418418
enum {
419419
HAVE_XHDR = 1 << 0,
420420
} flags;
421+
enum {
422+
PH_AUTHORITY = 1 << 0,
423+
PH_METHOD = 1 << 1,
424+
PH_PATH = 1 << 2,
425+
} pseudo_headers;
421426
char *path;
422427
char *method_str;
423428
char *authority_str;
@@ -1829,7 +1834,16 @@ interop_server_hset_add_header (void *hset_p, struct lsxpack_header *xhdr)
18291834
unsigned name_len, value_len;
18301835

18311836
if (!xhdr)
1832-
return 0;
1837+
{
1838+
if (req->pseudo_headers == (PH_AUTHORITY|PH_METHOD|PH_PATH))
1839+
return 0;
1840+
else
1841+
{
1842+
LSQ_INFO("%s: missing some pseudo-headers: 0x%X", __func__,
1843+
req->pseudo_headers);
1844+
return 1;
1845+
}
1846+
}
18331847

18341848
name = lsxpack_header_get_name(xhdr);
18351849
value = lsxpack_header_get_value(xhdr);
@@ -1856,6 +1870,7 @@ interop_server_hset_add_header (void *hset_p, struct lsxpack_header *xhdr)
18561870
req->path = strndup(value, value_len);
18571871
if (!req->path)
18581872
return -1;
1873+
req->pseudo_headers |= PH_PATH;
18591874
return 0;
18601875
}
18611876

@@ -1872,6 +1887,7 @@ interop_server_hset_add_header (void *hset_p, struct lsxpack_header *xhdr)
18721887
req->method = POST;
18731888
else
18741889
req->method = UNSUPPORTED;
1890+
req->pseudo_headers |= PH_METHOD;
18751891
return 0;
18761892
}
18771893

@@ -1880,6 +1896,7 @@ interop_server_hset_add_header (void *hset_p, struct lsxpack_header *xhdr)
18801896
req->authority_str = strndup(value, value_len);
18811897
if (!req->authority_str)
18821898
return -1;
1899+
req->pseudo_headers |= PH_AUTHORITY;
18831900
return 0;
18841901
}
18851902

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.5'
29+
release = u'2.29.6'
3030

3131

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

docs/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ Contents
6565
gettingstarted
6666
tutorial
6767
apiref
68-
internals
6968
devel
69+
internals
7070
faq
7171

7272
Indices and tables

0 commit comments

Comments
 (0)