Release 2.25.0

- [API, FEATURE] Add es_delay_onclose option to delay on_close until all
  data is ACKed.  Use new function lsquic_stream_has_unacked_data() to
  learn whether peer acknowledged all data written to stream.
- [API] Add optional on_reset() stream callback to get notifications
  when RESET or STOP_SENDING frames are received.
- [BUGFIX] On STOP_SENDING, make conn tickable is _writeable_, not
  readable.
This commit is contained in:
Dmitri Tikhonov 2020-12-04 11:29:14 -05:00
parent 57fe5a13ac
commit 7f96c7c7f3
13 changed files with 300 additions and 58 deletions

View file

@ -856,6 +856,16 @@ settings structure:
Default value is :macro:`LSQUIC_DF_QPACK_EXPERIMENT`
.. member:: int es_delay_onclose
When set to true, :member:`lsquic_stream_if.on_close` will be delayed until the
peer acknowledges all data sent on the stream. (Or until the connection
is destroyed in some manner -- either explicitly closed by the user or
as a result of an engine shutdown.) To find out whether all data written
to peer has been acknowledged, use `lsquic_stream_has_unacked_data()`.
Default value is :macro:`LSQUIC_DF_DELAY_ONCLOSE`
To initialize the settings structure to library defaults, use the following
convenience function:
@ -1088,6 +1098,10 @@ out of date. Please check your :file:`lsquic.h` for actual values.*
By default, QPACK experiments are turned off.
.. macro:: LSQUIC_DF_DELAY_ONCLOSE
By default, calling :member:`lsquic_stream_if.on_close()` is not delayed.
Receiving Packets
-----------------
@ -1272,6 +1286,20 @@ the engine to communicate with the user code:
This callback is mandatory.
.. member:: void (*on_reset) (lsquic_stream_t *s, lsquic_stream_ctx_t *h, int how)
This callback is called as soon as the peer resets a stream.
The argument `how` is either 0, 1, or 2, meaning "read", "write", and
"read and write", respectively (just like in ``shutdown(2)``). This
signals the user to stop reading, writing, or both.
Note that resets differ in gQUIC and IETF QUIC. In gQUIC, `how` is
always 2; in IETF QUIC, `how` is either 0 or 1 because on can reset
just one direction in IETF QUIC.
This callback is optional. The reset error can still be collected
during next "on read" or "on write" event.
.. member:: void (*on_hsk_done)(lsquic_conn_t *c, enum lsquic_hsk_status s)
When handshake is completed, this callback is called.
@ -1945,6 +1973,11 @@ Miscellaneous Stream Functions
Returns true if this stream was rejected, false otherwise. Use this as
an aid to distinguish between errors.
.. function:: int lsquic_stream_has_unacked_data (const lsquic_stream_t *stream)
Return true if peer has not ACKed all data written to the stream. This
includes both packetized and buffered data.
Other Functions
---------------

View file

@ -24,9 +24,9 @@ copyright = u'2020, LiteSpeed Technologies'
author = u'LiteSpeed Technologies'
# The short X.Y version
version = u'2.24'
version = u'2.25'
# The full version, including alpha/beta/rc tags
release = u'2.24.5'
release = u'2.25.0'
# -- General configuration ---------------------------------------------------