mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
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:
parent
cb1e8c1022
commit
fbc6cc0413
55 changed files with 6557 additions and 391 deletions
|
@ -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
|
||||
|
|
|
@ -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 ---------------------------------------------------
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue