Release 2.12.0

- [FEATURE] QUIC timestamps extension.
- [API] New: ea_alpn that is used when not in HTTP mode.
- [BUGFIX] SNI is mandatory only for HTTP/3 and gQUIC.
- [BUGFIX] Benign double-free -- issue #110.
- [BUGFIX] Printing of transport parameters.
This commit is contained in:
Dmitri Tikhonov 2020-03-02 08:53:41 -05:00
parent fa4561dcea
commit afe3d36359
24 changed files with 279 additions and 34 deletions

View file

@ -239,7 +239,7 @@ optional members.
.. member:: struct ssl_ctx_st * (*ea_get_ssl_ctx)(void *peer_ctx)
Get SSL_CTX associated with a peer context. Mandatory in server
mode.
mode. This is use for default values for SSL instantiation.
.. member:: const struct lsquic_hset_if *ea_hsi_if
.. member:: void *ea_hsi_ctx
@ -268,6 +268,8 @@ optional members.
In a multi-process setup, it may be useful to observe the CID
lifecycle. This optional set of callbacks makes it possible.
.. _apiref-engine-settings:
Engine Settings
---------------
@ -348,7 +350,7 @@ settings structure:
.. member:: unsigned es_max_header_list_size
This corresponds to SETTINGS_MAX_HEADER_LIST_SIZE
(RFC 7540, Section 6.5.2). 0 means no limit. Defaults
(:rfc:`7540#section-6.5.2`). 0 means no limit. Defaults
to :func:`LSQUIC_DF_MAX_HEADER_LIST_SIZE`.
.. member:: const char *es_ua
@ -685,6 +687,12 @@ settings structure:
Default value is :macro:`LSQUIC_DF_DELAYED_ACKS`
.. member:: int es_timestamps
Enable timestamps extension. Allowed values are 0 and 1.
Default value is @ref LSQUIC_DF_TIMESTAMPS
To initialize the settings structure to library defaults, use the following
convenience function:
@ -940,7 +948,7 @@ that the library uses to send packets.
.. member:: int ecn
ECN: Valid values are 0 - 3. See RFC 3168.
ECN: Valid values are 0 - 3. See :rfc:`3168`.
ECN may be set by IETF QUIC connections if ``es_ecn`` is set.
@ -1465,7 +1473,7 @@ fields yourself. In that case, the header set must be "read" from the stream vi
Get header set associated with the stream. The header set is created by
``hsi_create_header_set()`` callback. After this call, the ownership of
the header set is trasnferred to the caller.
the header set is transferred to the caller.
This call must precede calls to :func:`lsquic_stream_read()`,
:func:`lsquic_stream_readv()`, and :func:`lsquic_stream_readf()`.

View file

@ -24,9 +24,9 @@ copyright = u'2020, LiteSpeed Technologies'
author = u'LiteSpeed Technologies'
# The short X.Y version
version = u'2.11'
version = u'2.12'
# The full version, including alpha/beta/rc tags
release = u'2.11.1'
release = u'2.12.0'
# -- General configuration ---------------------------------------------------

View file

@ -1,2 +1,71 @@
Getting Started with LSQUIC
===========================
Getting Started
===============
Supported Platforms
-------------------
LSQUIC compiles and runs on Linux, FreeBSD, and Mac OS. It has been
tested on i386, x86_64, as well as Raspberry Pi.
Windows support is on the TODO list.
Dependencies
------------
LSQUIC library uses:
- zlib_;
- BoringSSL_; and
- `ls-qpack`_ (as a Git submodule).
The accompanying demo command-line tools use libevent_.
What's in the box
-----------------
- ``src/liblsquic`` -- the library
- ``test`` -- demo client and server programs
- ``test/unittests`` -- unit tests
Building
--------
To build the library, follow instructions in the README_ file.
Demo Examples
-------------
Fetch Google home page:
::
./http_client -s www.google.com -p / -o version=Q050
Run your own server (it does not touch the filesystem, don't worry):
::
./http_server -c www.example.com,fullchain.pem,privkey.pem -s 0.0.0.0:4433
Grab a page from your server:
::
./http_client -H www.example.com -s 127.0.0.1:4433 -p /
You can play with various options, of which there are many. Use
the ``-h`` command-line flag to see them.
Next steps
----------
If you want to use LSQUIC in your program, check out the :doc:`tutorial` and
the :doc:`apiref`.
:doc:`internals` covers some library internals.
.. _zlib: https://www.zlib.net/
.. _BoringSSL: https://boringssl.googlesource.com/boringssl/
.. _`ls-qpack`: https://github.com/litespeedtech/ls-qpack
.. _libevent: https://libevent.org/
.. _README: https://github.com/litespeedtech/lsquic/blob/master/README.md

View file

@ -3,9 +3,6 @@ LSQUIC Documentation
This is the documentation for LSQUIC_ |release|, last updated |today|.
Introduction
------------
LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC
and HTTP/3 functionality for servers and clients. LSQUIC is:
@ -38,7 +35,9 @@ Contents
:maxdepth: 2
gettingstarted
tutorial
apiref
internals
Indices and tables
==================

11
docs/internals.rst Normal file
View file

@ -0,0 +1,11 @@
*********
Internals
*********
Connection Management
=====================
References to connections can exist in six different places in an
engine.
.. image:: lsquic-engine-conns.png

View file

@ -0,0 +1 @@
<mxfile host="www.draw.io" modified="2020-02-21T20:56:15.366Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0" etag="X7KTg7RjNxutHAnzRWEE" version="12.7.3"><diagram id="g-XUBOnqw-Le0S7dI5B8" name="Page-1">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</diagram></mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB