Releases: litespeedtech/lsquic
Releases · litespeedtech/lsquic
Bugfix; loss bits update; code cleanup
- [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.
HTTP/3 improvements; bug fixes
- [HTTP3] Verify number of bytes in incoming DATA frames against content-length.
- [HTTP3] Stop issuing streams credits if peer stops opening QPACK decoder window. This addresses a potential attack whereby client can cause the server to keep allocating memory. See Security Considerations in the QPACK draft.
- [BUGFIX] Mini conn: don't shorten max packet size for Q050 and later.
- [BUGFIX] Init IETF connection flow controller using correct setting.
- [BUGFIX] Fix unintended sign extension when removing header protection.
- Code cleanup and minor fixes.
Fix another OLS build issue
v2.8.3 Add lsquic_parse_Q050.c
Fix OLS build issue
v2.8.2 Remove lsquic_buf.c
Several improvements and a bug fix
- [FEATURE] Use occasional packet number gaps to detect optimistic ACK attacks.
- [BUGFIX] Q050 client: all packet numbers are in the App PNS.
- [OPTIMIZATION] Merge multi-range ACK frames, not just single-range ACK frames.
- IETF QUIC: use RTT estimate in ack timeout calculation.
- IETF handshake: abort conn when unexpected errors occur.
- Use PING rather than MAX_DATA frames to elicit ACKs from peer.
- Server: enforce 1200 byte Initial minimum packet size.
- [CLEANUP] Remove code to disable gQUIC crypto.
- [CLEANUP] Remove n_timestamps from ACK info struct.
- Optimize driver: reuse previous ancillary message when possible.
Add Q050 support
- [FEATURE] Add support for Q050.
- [OPTIMIZATION] Reduce mallocs in gQUIC handshake.
- [BUGFIX] Disable redo of failed STREAM frame insertion with debug logging.
Maintenance release
- [DEBUG] Further dedup next advisory tick messages when reason is the same.
- [BUGFIX] Update size of
a
array in TP struct. Fixes (benign) bug #94. - Use Cubic by default again instead of BBR, as it delivers more consistent performance.
Bugfix release
- [BUGFIX] Send controller: update scheduled bytes when DCID length changes (IETF client).
- [BUGFIX] Drop alarm check from sanity test. It no longer works now that we use loss chains.
- [PORTABILITY] Fix build on Alpine Linux.
- [PORTABILITY] Fix build using XCode.
- Client initial DCID length: use RAND_bytes() instead of rand(3).
- Add unit tests for connection min heap.
- [DEBUG] Log CID in gQUIC handshake module
- [DEBUG] Turn on extra checks for IETF client send controller.
- [DEBUG] Dedup next advisory tick messages when reason is IDLE timer.
- [DEBUG] QPACK decoder handler: log header error code.
Bugfix release
- [BUGFIX] client: don't call ignore_init() in middle of batch send. ignore_init() makes an assumption that the send controller has access to all outgoing packets. This change wraps a few IETF full connection methods to delay calling ignore_init() until the engine returns all outgoing packets that were batched.
- [BUGFIX] set errno to EAGAIN if sendmmsg() can't send all of them. This needs to be done because the value of errno may be lost on some platforms.
- [BUGFIX] Typo that set all bits in sm_qflags lead to crashes.
- [BUGFIX] Do not cancel header block processing after failure, as QPACK releases the reference in that case.
- [CLEANUP] IETF encrypt: replace assert(0) with a warning.
- Several small improvements to the test server.
Drop connections that cause sending failures
- [API, FEATURE] Close connection immediately when
ea_packets_out()
fails witherrno != EAGAIN
. The API change is that errno is now examined. Make sure to set it if using something other thansendmsg()
to send packets. - [CLEANUP] Immediate close logic in IETF full conn.
- [CLEANUP] Fix bogus warning about uninitialized `pair' variable.