#
a74702c6 |
|
06-May-2022 |
George Wang <gwang@litespeedtech.com> |
Release 3.1.0 |
#
d755d26e |
|
06-May-2022 |
Ryan A. Pavlik <ryan.pavlik@collabora.com> |
CMake-only computation of whether librt is needed. (#374) |
#
797b40e7 |
|
29-Apr-2022 |
Ryan A. Pavlik <ryan.pavlik@collabora.com> |
Add an installed CMake config. (#370) * Add an installed CMake config. Does not perform transitive link to boringssl though. * Install vc_compat.h header |
#
454939cd |
|
24-Apr-2022 |
Ryan A. Pavlik <ryan.pavlik@gmail.com> |
CMake improvements (#369) * Silence CMake warning by updating minimum versions. * Generate files to build directory, not source directory |
#
f07b3eae |
|
16-Dec-2021 |
Tyler Young <tyler.young@stirlinglabs.com> |
[WIP] use vcpkg for getopt; build windows shared lib enhancements (#350) * fix MSVC compiler shared library issues - mostly around 'extern const' * add vcpkg install getopt to appveyor-windows.yml show appveyor where to get getopt from vcpkg (non-static lib to avoid LGPL violation) * add missing else case in lsquic_shared_support.h for windows static lib path * have cmake spit out it's version have cmake copy dependent dlls to build dir for tests on windows (getopt.dll) * copy getopt.dll dep for tests added commented version that requires >= 3.21 but handles any dll deps * try caching boringssl dir to reduce CI build time since it's always same commit specified in config file define VCPKG_ROOT in env since I can't seem to find it by VCPKG_ROOT or VCPKG_INSTALLED_DIR in appveyor's cmake v3.16 + vcpkg * make windows cache dependent on yml and cmd * sync up with changes to ls-qpack |
#
99a1ad0f |
|
03-Mar-2021 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.29.3 - [BUGFIX] Do not send RESET_STREAM if writing to stream is already finished. - perf_client: wait for all ACKs before exiting. - Improve how generated RESET_STREAM is logged. - Fix compilation in different combos of adv_tick/conn_stats flags. - Move qpack warning disablement into src/liblsquic/CMakeLists.txt. |
#
06b2a236 |
|
06-Jan-2021 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.27.1 - [API] New knob to set outgoing packet batch size. - Aborted connection now become tickable immediately. - Abort connection when HTTP/3 frame cannot be opened (can only happen when malloc fails). |
#
758aff32 |
|
21-Oct-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.23.2 - Add QPACK stats collection and experimentation mode, see the new es_qpack_experiment setting. - Log busy connection stats every second using the new "conn-stats" log module. - Log about skipping only once. - Update HTTP/3 greased frame type formula. - Use ls-qpack v2.2.1. |
#
fbc6cc04 |
|
07-Oct-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
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. |
#
966c52fc |
|
01-Oct-2020 |
Jonas Vautherin <jonas.vautherin@protonmail.ch> |
Add CMake install target (#171) |
#
b62ec17f |
|
29-Sep-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.21.0 - [FEATURE] QUIC and HTTP/3 Internet Draft 31 support. - [API] Let user generate Souce Connection IDs. - [FEATURE] Allow building lsquic as shared library. - [OPTIMIZATION] Receive history: use a single contiguous memory block for everything. - Deprecate QUIC versions ID-27 and ID-30. |
#
2e1429b4 |
|
26-Sep-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Look for .so BoringSSL libs if LSQUIC_SHARED_LIB option is on |
#
038a9441 |
|
28-Sep-2020 |
Aaron France <aaron.l.france@gmail.com> |
allow for making a shared library (Ref: #137) (#152) |
#
b1a7c3f9 |
|
16-Sep-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.20.0 - [FEATURE] QUIC and HTTP/3 Internet Draft 30 support. - [FEATURE] Unreliable Datagram Extension support. - [FEATURE] Adaptive congestion controller. - [BUGFIX] Do not send MAX_STREAM_DATA frames on crypto streams. - [BUGFIX] Fail with CRYPTO_BUFFER_EXCEEDED when too much CRYPTO data comes in. - [BUFFIX] Spin bit is now strictly per path; value is reset on DCID change. - [BUGFIX] Check that max value of max_streams_uni and max_streams_bidi TPs is 2^60. - [BUGFIX] Close IETF mini conn immediately if crypto session cannot be initialized. - Deprecate ID-28 (no browser uses it): it's no longer in the default versions list. - New programs duck_server and duck_client that implement the experimental siduck-00 protocol. They quack! - IETF crypto streams: don't limit ourselves from sending. - Command-line programs: turn off QL loss bits if -G is used, as Wireshark cannot decrypt QUIC packets when this extension is used. - Turn all h3 framing unit tests back on. - Fix malo initialization when compiled in no-pool mode. |
#
b8fa6195 |
|
29-Jul-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.19.0 - [FEATURE] DPLPMTUD support. IETF connections now search for the maximum packet size, improving throughput. - [DEBUG] Record event in stream history when on_close() is called in dtor. |
#
fb3e20e0 |
|
03-Jun-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Fix Windows support |
#
bc520ef7 |
|
24-Feb-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.11.0 - [FEATURE] QUIC and HTTP/3 Internet Draft 27 support. - [FEATURE] Add experimental delayed ACKs extension. - Drop support for Internet Draft 24. - Code cleanup. |
#
83506617 |
|
21-Feb-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Set lshpack include directory in the library's Makefile |
#
9fc12041 |
|
28-Jan-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.10.0 - [FEATURE] QUIC and HTTP/3 Internet Draft 25 support. - [API] Drop support for ID-23. - [BUGFIX] Set key phase bit on outgoing packets correctly. - Code cleanup. |
#
10c41073 |
|
16-Jan-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.8.9 - [BUGFIX] Use ls-qpack 0.11.1 - [OPTIMIZATION] Generate random bytes in batches. - Change loss_bits transport parameter ID to 0x1057 following latest draft. - Randomize period with which PINGs are sent to elicit ACKs. - Some refactoring and code cleanup. |
#
7d09751d |
|
10-Jan-2020 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.8.7 - [BUGFIX] Initial packet size check for IETF mini conn applies to UDP payload, not QUIC packet. - Support old and new school loss_bits transport parameter. - Use Q run length of 64 as suggested in the loss bits Draft. - Undo square wave count when packet is delayed. - Code cleanup; minor fixes. |
#
7a8b2ece |
|
24-Dec-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.8.0 - [FEATURE] Add support for Q050. - [OPTIMIZATION] Reduce mallocs in gQUIC handshake. - [BUGFIX] Disable redo of failed STREAM frame insertion with debug logging. |
#
1245d2e0 |
|
30-Sep-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.4.3 - Add GQUIC versions to the list of h3 ALPNs for Alt-Svc header. For example, h3-Q043. Chrome will switch to using this format at some point in the future. - [BUGFIX] Send correct value in max_streams_uni transport param - [SPEC] Abort IETF QUIC connection if max_early_data_size is not set to 0xFFFFFFFF |
#
3ff30b27 |
|
19-Sep-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
cmake: fix up build |
#
92f6e17b |
|
18-Sep-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 2.4.0 [FEATURE] QUIC and HTTP/3 Internet Draft 23 support |
#
5392f7a3 |
|
11-Sep-2019 |
LiteSpeed Tech <info@litespeedtech.com> |
Release 2.2.0: server included, ID-22 supported (#76) |
#
55cd0b38 |
|
12-Apr-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 1.21.0 [FEATURE] Add qlog log module. |
#
c7d81ce1 |
|
01-Apr-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 1.20.0 [FEATURE] Add support for Q046. |
#
229fce07 |
|
04-Jan-2019 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 1.17.11 Fix strict aliasing warning in when compiling with optimizations |
#
14e3680d |
|
07-Sep-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Release 1.14.0 - [API Change] Disable packet sending if full batch cannot be sent If lsquic_packets_out_f() cannot send the whole batch, disable packet sending until lsquic_engine_send_unsent_packets() is called. - [BUGFIX] Handle case when STREAM frame does not fit. - [BUGFIX] Always allow incoming STREAM frames to overlap. Peers may send overlapping STREAM frames even if using versions older than Q043. - Custom header set fixes: - set "FIN reached" flag when custom header with FIN flag is claimed; - do not return custom header set for a reset stream. |
#
3b55e6ae |
|
28-Aug-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
1.13.0: [FEATURE, API Change] HTTP header bypass Add ability to create custom header set objects via callbacks. This avoids reading and re-parsing headers from the stream. See test/http_client.c for example implementation. (Use -B flag to turn it on). |
#
9626cfc2 |
|
16-Aug-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
1.11.0: [FEATURE] Add support for Q044 |
#
97028223 |
|
10-May-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Drop support for Q041 |
#
bea64822 |
|
02-May-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Latest changes: - Switch to using ls-hpack 1.1 - [BUGFIX] Do not ignore stream resets after receiving FIN |
#
e8bd737d |
|
09-Apr-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
[API Change, OPTIMIZATION] Only process conns that need to be processed The API is simplified: do not expose the user code to several queues. A "connection queue" is now an internal concept. The user processes connections using the single function lsquic_engine_process_conns(). When this function is called, only those connections are processed that need to be processed. A connection needs to be processed when: 1. New incoming packets have been fed to the connection. 2. User wants to read from a stream that is readable. 3. User wants to write to a stream that is writeable. 4. There are buffered packets that can be sent out. (This means that the user wrote to a stream outside of the lsquic library callback.) 5. A control frame (such as BLOCKED) needs to be sent out. 6. A stream needs to be serviced or delayed stream needs to be created. 7. An alarm rings. 8. Pacer timer expires. To achieve this, the library places the connections into two priority queues (min heaps): 1. Tickable Queue; and 2. Advisory Tick Time queue (ATTQ). Each time lsquic_engine_process_conns() is called, the Tickable Queue is emptied. After the connections have been ticked, they are queried again: if a connection is not being closed, it is placed either in the Tickable Queue if it is ready to be ticked again or it is placed in the Advisory Tick Time Queue. It is assumed that a connection always has at least one timer set (the idle alarm). The connections in the Tickable Queue are arranged in the least recently ticked order. This lets connections that have been quiet longer to get their packets scheduled first. This change means that the library no longer needs to be ticked periodically. The user code can query the library when is the next tick event and schedule it exactly. When connections are processed, only the tickable connections are processed, not *all* the connections. When there are no tick events, it means that no timer event is necessary -- only the file descriptor READ event is active. The following are improvements and simplifications that have been triggered: - Queue of connections with incoming packets is gone. - "Pending Read/Write Events" Queue is gone (along with its history and progress checks). This queue has become the Tickable Queue. - The connection hash no longer needs to track the connection insertion order. |
#
10c492f0 |
|
03-Apr-2018 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Update copyright year; add CONTRIBUTORS.txt |
#
1b97e4af |
|
29-Sep-2017 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
Latest changes - Add support for Q041; drop support for Q040 |
#
50aadb33 |
|
23-Sep-2017 |
Dmitri Tikhonov <dtikhonov@litespeedtech.com> |
LSQUIC Client: Initial release |