Release 2.22.0

- [FEATURE] Extensible HTTP Priorities (HTTP/3 only).
- [FEATURE] Add conn context to packet-out memory interface (PR #175).
- [BUGFIX] gQUIC proof generation: allocate buffer big enough for
  signature (issue #173).
- [BUGFIX] Make library thread-safe: drop use of global variables
  (issue #133, issue #167).
- [BUGFIX] Deactivate only *recent* HQ frame, not any HQ frame.
- [BUGFIX] gQUIC server: associate compressed cert with SSL_CTX,
  instead of keeping them in a separate hash, potentially leading
  to mismatches.
- [BUGFIX] Stream data discard infinite loop: break on FIN.
- cmake: add install target via -DCMAKE_INSTALL_PREFIX (PR #171).
- Support randomized packet number to begin a connection.
- Mini and full IETF connection size optimization.
- http_client: specify HTTP priorities based on stream conditions.
This commit is contained in:
Dmitri Tikhonov 2020-10-07 09:41:26 -04:00
parent cb1e8c1022
commit fbc6cc0413
55 changed files with 6557 additions and 391 deletions

View file

@ -842,6 +842,13 @@ settings structure:
Default value is :macro:`LSQUIC_DF_OPTIMISTIC_NAT`
.. member:: int es_ext_http_prio
If set to true, Extensible HTTP Priorities are enabled. This
is HTTP/3-only setting.
Default value is :macro:`LSQUIC_DF_EXT_HTTP_PRIO`
To initialize the settings structure to library defaults, use the following
convenience function:
@ -1066,6 +1073,10 @@ out of date. Please check your :file:`lsquic.h` for actual values.*
Assume optimistic NAT by default.
.. macro:: LSQUIC_DF_EXT_HTTP_PRIO
Turn on Extensible HTTP Priorities by default.
Receiving Packets
-----------------
@ -2162,7 +2173,7 @@ The following log modules are defined:
- *hcsi-reader*: Reader of the HTTP/3 control stream.
- *hcso-writer*: Writer of the HTTP/3 control stream.
- *headers*: HEADERS stream (Google QUIC).
- *hsk-adapter*:
- *hsk-adapter*:
- *http1x*: Header conversion to HTTP/1.x.
- *logger*: Logger.
- *mini-conn*: Mini connection.
@ -2184,6 +2195,72 @@ The following log modules are defined:
- *tokgen*: Token generation and validation.
- *trapa*: Transport parameter processing.
.. _extensible-http-priorities:
Extensible HTTP Priorities
--------------------------
lsquic supports the
`Extensible HTTP Priorities Extension <https://tools.ietf.org/html/draft-ietf-httpbis-priority>`_.
It is enabled by default when HTTP/3 is used. The "urgency" and "incremental"
parameters are included into a dedicated type:
.. type:: struct lsquic_ext_http_prio
.. member:: unsigned char urgency
This value's range is [0, 7], where 0 is the highest and 7 is
the lowest urgency.
.. member:: signed char incremental
This is a boolean value. The valid range is [0, 1].
Some useful macros are also available:
.. macro:: LSQUIC_MAX_HTTP_URGENCY
The maximum value of the "urgency" parameter is 7.
.. macro:: LSQUIC_DEF_HTTP_URGENCY
The default value of the "urgency" parameter is 3.
.. macro:: LSQUIC_DEF_HTTP_INCREMENTAL
The default value of the "incremental" parameter is 0.
There are two functions to
manage a stream's priority:
.. function:: int lsquic_stream_get_http_prio (lsquic_stream_t \*stream, struct lsquic_ext_http_prio \*ehp)
Get a stream's priority information.
:param stream: The stream whose priority informaion we want.
:param ehp: Structure that is to be populated with the stream's
priority information.
:return: Returns zero on success of a negative value on failure.
A failure occurs if this is not an HTTP/3 stream or if
Extensible HTTP Priorities have not been enabled.
See :member:`lsquic_engine_settings.es_ext_http_prio`.
.. function:: int lsquic_stream_set_http_prio (lsquic_stream_t \*stream, const struct lsquic_ext_http_prio \*ehp)
Set a stream's priority information.
:param stream: The stream whose priority we want to set.
:param ehp: Structure containing the stream's new priority information.
:return: Returns zero on success of a negative value on failure.
A failure occurs if some internal error occured or if this
is not an HTTP/3 stream or if Extensible HTTP Priorities
haven't been enabled.
See :member:`lsquic_engine_settings.es_ext_http_prio`.
.. _apiref-datagrams:
Datagrams

View file

@ -24,9 +24,9 @@ copyright = u'2020, LiteSpeed Technologies'
author = u'LiteSpeed Technologies'
# The short X.Y version
version = u'2.21'
version = u'2.22'
# The full version, including alpha/beta/rc tags
release = u'2.21.0'
release = u'2.22.0'
# -- General configuration ---------------------------------------------------

View file

@ -37,6 +37,7 @@ LSQUIC supports nearly all QUIC and HTTP/3 features, including
- TLS Key updates
- Extensions:
- :ref:`extensible-http-priorities`
- :ref:`apiref-datagrams`
- Loss bits extension (allowing network observer to locate source of packet loss)
- Timestamps extension (allowing for one-way delay calculation, improving performance of some congestion controllers)