lsquic

LiteSpeed QUIC and HTTP/3 Library

MIT License

Stars
1.5K

Bot releases are hidden (Show)

lsquic - Bug fixes: cancel challenges, delay critical stream destruction, et al

Published by litespeedtech almost 4 years ago

  • [BUGFIX] gQUIC: do not destroy critical streams when connection is closed. See issue #201.
  • [BUGFIX] Drop #if LSQUIC_CONN_STATS from lsquic.h. See issue #211.
  • [BUGFIX] Challenge cancellation when path validation fails.
  • [BUGFIX] Do not send FIN if RST is scheduled to be sent on a stream.
  • [BUGFIX] gQUIC's is_tickable() when connection is closing.
  • [BUGFIX] Q050 processing of GOAWAY frames.
lsquic - Fix memory corruption in receive history copy-ranges

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Memory corruption in receive history copy-ranges function.
lsquic - Fix memory corruption in receive history copy-ranges

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Memory corruption in receive history copy-ranges function.
lsquic - API to set batch size; a few small fixes

Published by litespeedtech almost 4 years ago

  • [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).
lsquic - Drop keylog APIs; improve ALPN debug logging

Published by litespeedtech almost 4 years ago

  • [API] Remove keylog callbacks. See issue #188.
  • Add a bit more ALPN logging.
lsquic - Several stop-sending bug fixes; new optional callback

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Do not drop incoming data when STOP_SENDING is received.
  • [BUGFIX] Receipt of STOP_SENDING should not cause read-reset.
  • [BUGFIX] Allow stream writes after receiving RESET.
  • [BUGFIX] Typo in stream: ANDing enum with wrong flag.
  • [BUGFIX] Reset elision: do not use zero as special stream ID value, for zero is a valid stream ID in IETF QUIC.
  • [API] Add optional on_conncloseframe_received() callback.
  • Use zero error code in RESET stream sent in response to STOP_SENDING.
lsquic - Fix migration corner cases and stream unit test

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Migration corner cases: drop or pad over path challenge and response frames when necessary.
  • Fix stream unit test.
lsquic - Handle packet reordering; add parameter to get_ssl_ctx() callback

Published by litespeedtech almost 4 years ago

  • [OPTIMIZATION] Adjust packet reordering threshold when spurious losses are detected.
  • [API] Pass pointer to local sockaddr to ea_get_ssl_ctx() callback.
lsquic - Option to delay on_close; new on_reset callback

Published by litespeedtech almost 4 years ago

  • [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.
lsquic - Delayed ACKs; limit receive history

Published by litespeedtech almost 4 years ago

  • [FEATURE] Improve Delayed ACKs extension and turn it on by default.
  • Limit receive history to a finite amount of memory.
lsquic - Bug fixes: CC, CIDs, memory leak

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Check whether ECN counts are set in ACK struct before using them.
  • [BUGFIX] Calculate TLP timer correctly when only one packet is in flight.
  • [BUGFIX] Min RTO delay is 200 milliseconds, not 1 second.
  • [BUGFIX] Memory leak in QPACK decoder handler: discard hset when necessary.
  • Allow retired and drained CIDs to be reused after a timeout.
lsquic - Bug fixes

Published by litespeedtech almost 4 years ago

  • [BUGFIX] min RTO delay is 200 ms , not 1 second.
  • [BUGFIX] calculate TLP timer correctly when only one packet is in flight.
  • [BUGFIX] discard CRYPTO frames from lower levels after connection promotion.
  • [BUGFIX] cancel path response if path could not be initialized.
  • [BUGFIX] if push promise fails, do not invoke hset destructor.
lsquic - Bug fixes: client BBR, memory leak

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Get rough RTT estimate on receipt of Handshake packet. This prevents BBR on the client from miscalculating pacing rate, slowing down sending of ACK packets.
  • [BUGFIX] Packets sent during handshake are app-limited.
  • [BUGFIX] Bandwidth sampler starts in app-limited mode.
  • [BUGFIX] Memory leak: free QPACK handler context in stream dtor.
  • Logging improvements.
lsquic - Migration and coalescing bug fixes

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Allow peer to migrate when its SCID is zero-length.
  • [BUGFIX] PADDING size calculation: only one Short packet can be coalesced. (This should have been part of the fix in 2.24.1).
  • Abort connect if received NEW_CONNECTION_ID but current DCID is zero-length.
  • Improve log messages
lsquic - SSL_CTX for client; bug fixes

Published by litespeedtech almost 4 years ago

  • [API] Allow use of ea_get_ssl_ctx() on the client (optional). PR #186.
  • [BUGFIX] Expand datagram with ack-eliciting Initial to 1200 bytes after connection promotion.
  • [BUGFIX] Discard CRYPTO frames from lower encryption levels after connection promotion.
  • [BUGFIX] Cancel path response if path could not be initialized.
lsquic - ID-32 support; a couple of bug fixes

Published by litespeedtech almost 4 years ago

  • [FEATURE] QUIC and HTTP/3 Internet Draft 31 support. Drop ID-30 and ID-31 support.
  • [BUGFIX] Divide-by-zero in newly enabled conn stats code when no packets were sent.
  • [BUGFIX] Memory leak in gQUIC client when server hello cannot be parsed.
  • [BUGFIX] Server Initial packet size calculation.
  • Log user-agent and CONN_CLOSE reason when peer reports error.
  • Example programs: Specify ALPN for echo and md5 clients and servers (issue #184).
  • Example programs: Don't add "QUIC_" prefix to lines in keylog file (issue #185).
  • http_server: Fix fd leak in preadv mode; fix preadv() usage when reading from disk.
lsquic - Revert 2.12.11

Published by litespeedtech almost 4 years ago

lsquic - Fix packetization threshold

Published by litespeedtech almost 4 years ago

  • [BUGFIX] Update packetization threshold when writing to stream after packet size is reduced following an RTO.
lsquic - QPACK experiments, log connection stats

Published by litespeedtech almost 4 years ago

  • 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.
lsquic - Client 0-RTT support; bug fixes

Published by litespeedtech about 4 years ago

  • [FEATURE] IETF Client 0-RTT support.
  • [BUGFIX] Do not schedule MTU probe on first tick.
  • [BUGFIX] Parsing DATAGRAM frame.
  • [BUGFIX] If push promise fails, do not invoke hset destructor.
  • [BUGFIX] Client: When connections are IDed by port number, check DCID. Fixes issue #176.
  • [BUGFIX] Regression introduced in 2.22.0: use correct number of PNSs for IETF mini conn during promotion.
  • Revert the 2.22.1 lsquic_is_valid_hs_packet change. All that was necessary is a change to the way we call it in lsquic_engine. No change to the function itself is required.