mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
- Fix unit test regression: enable them correctly in cmake. - Simplify connection has interface
153 lines
6.1 KiB
Text
153 lines
6.1 KiB
Text
2018-02-28
|
|
- Fix unit test regression: enable them correctly in cmake.
|
|
- Simplify connection has interface
|
|
|
|
2018-02-26
|
|
- [API Change] lsquic_engine_connect() returns pointer to the connection
|
|
object.
|
|
- [API Change] Add lsquic_conn_get_engine() to get engine object from
|
|
connection object.
|
|
- [API Change] Add lsquic_conn_status() to query connection status.
|
|
- [API Change] Add add lsquic_conn_set_ctx().
|
|
- [API Change] Add new timestamp format, e.g. 2017-03-21 13:43:46.671345
|
|
- [OPTIMIZATION] Process handshake STREAM frames as soon as packet
|
|
arrives.
|
|
- [OPTIMIZATION] Do not compile expensive send controller sanity check
|
|
by default.
|
|
- [OPTIMIZATION] Add fast path to gquic_be_gen_reg_pkt_header.
|
|
- [OPTIMIZATION] Only make squeeze function call if necessary.
|
|
- [OPTIMIZATION] Speed up Q039 ACK frame parsing.
|
|
- [OPTIMIZATION] Fit most used elements of packet_out into first 64 bytes.
|
|
- [OPTIMIZATION] Keep track of scheduled bytes instead of calculating.
|
|
- [OPTIMIZATION] Prefetch next unacked packet when processing ACK.
|
|
- [OPTIMIZATION] Leverage fact that ACK ranges and unacked list are.
|
|
ordered.
|
|
- [OPTIMIZATION] Reduce function pointer use for STREAM frame generation
|
|
- Fix: reset incoming streams that arrive after we send GOAWAY.
|
|
- Fix: delay client on_new_conn() call until connection is fully set up.
|
|
- Fixes to buffered packets logic: splitting, STREAM frame elision.
|
|
- Fix: do not dispatch on_write callback if no packets are available.
|
|
- Fix WINDOW_UPDATE send and resend logic.
|
|
- Fix STREAM frame extension code.
|
|
- Fix: Drop unflushed data when stream is reset.
|
|
- Switch to tracking CWND using bytes rather than packets.
|
|
- Fix TCP friendly adjustment in cubic.
|
|
- Fix: do not generate invalid STOP_WAITING frames during high packet
|
|
loss.
|
|
- Pacer fixes.
|
|
|
|
2017-12-18
|
|
|
|
- Fix: better follow cubic curve after idle period
|
|
- Fix: add missing parts to outgoing packet splitting code
|
|
- Fix: compilation using gcc 4.8.4
|
|
|
|
2017-10-31
|
|
|
|
- Add APIs.txt -- describes LSQUIC APIs
|
|
|
|
2017-10-31
|
|
|
|
- [API Change] Sendfile-like functionality is gone. The stream no
|
|
longer opens files and deals with file descriptors. (Among other
|
|
things, this makes the code more portable.) Three writing functions
|
|
are provided:
|
|
|
|
lsquic_stream_write
|
|
lsquic_stream_writev
|
|
lsquic_stream_writef (NEW)
|
|
|
|
lsquic_stream_writef() is given an abstract reader that has function
|
|
pointers for size() and read() functions which the user can implement.
|
|
This is the most flexible way. lsquic_stream_write() and
|
|
lsquic_stream_writev() are now both implemented as wrappers around
|
|
lsquic_stream_writef().
|
|
|
|
- [OPTIMIZATION] When writing to stream, be it within or without the
|
|
on_write() callback, place data directly into packet buffer,
|
|
bypassing auxiliary data structures. This reduces amount of memory
|
|
required, for the amount of data that can be written is limited
|
|
by the congestion window.
|
|
|
|
To support writes outside the on_write() callback, we keep N
|
|
outgoing packet buffers per connection which can be written to
|
|
by any stream. One half of these are reserved for the highest
|
|
priority stream(s), the other half for all other streams. This way,
|
|
low-priority streams cannot write instead of high-priority streams
|
|
and, on the other hand, low-priority streams get a chance to send
|
|
their packets out.
|
|
|
|
The algorithm is as follows:
|
|
|
|
- When user writes to stream outside of the callback:
|
|
- If this is the highest priority stream, place it onto the
|
|
reserved N/2 queue or fail.
|
|
(The actual size of this queue is dynamic -- MAX(N/2, CWND) --
|
|
rather than N/2, allowing high-priority streams to write as
|
|
much as can be sent.)
|
|
- If the stream is not the highest priority, try to place the
|
|
data onto the reserved N/2 queue or fail.
|
|
- When tick occurs *and* more packets can be scheduled:
|
|
- Transfer packets from the high N/2 queue to the scheduled
|
|
queue.
|
|
- If more scheduling is allowed:
|
|
- Call on_write callbacks for highest-priority streams,
|
|
placing resulting packets directly onto the scheduled queue.
|
|
- If more scheduling is allowed:
|
|
- Transfer packets from the low N/2 queue to the scheduled
|
|
queue.
|
|
- If more scheduling is allowed:
|
|
- Call on_write callbacks for non-highest-priority streams,
|
|
placing resulting packets directly onto the scheduled queue
|
|
|
|
The number N is currently 20, but it could be varied based on
|
|
resource usage.
|
|
|
|
- If stream is created due to incoming headers, make headers readable
|
|
from on_new.
|
|
|
|
- Outgoing packets are no longer marked non-writeable to prevent placing
|
|
more than one STREAM frame from the same stream into a single packet.
|
|
This property is maintained via code flow and an explicit check.
|
|
Packets for stream data are allocated using a special function.
|
|
|
|
- STREAM frame elision is cheaper, as we only perform it if a reset
|
|
stream has outgoing packets referencing it.
|
|
|
|
- lsquic_packet_out_t is smaller, as stream_rec elements are now
|
|
inside a union.
|
|
|
|
2017-10-12
|
|
|
|
- Do not send RST_STREAM when stream is closed for reading
|
|
- Raise maximum header size from 4K to 64K
|
|
- Check header name and value lengths against maximum imposed by HPACK
|
|
- Fix NULL dereference in stream flow controller
|
|
|
|
2017-10-09
|
|
|
|
- Hide handshake implementation behind a set of function pointers
|
|
- Use monotonically increasing clock
|
|
- Make sure that retx delay is not larger than the max of 60 seconds
|
|
|
|
2017-09-29
|
|
|
|
- A few fixes to code and README
|
|
|
|
2017-09-28
|
|
|
|
- Add support for Q041; drop support for Q040
|
|
|
|
2017-09-27
|
|
|
|
- Fix CMakeLists.txt: BoringSSL include and lib was mixed up
|
|
|
|
2017-09-26
|
|
|
|
- Add support for Mac OS
|
|
- Add support for Raspberry Pi
|
|
- Fix BoringSSL compilation: include <openssl/hmac.h> explicitly
|
|
|
|
2017-09-22
|
|
|
|
- Initial release
|