1. 06 Jul, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.18.0 · 7483dee0
      Dmitri Tikhonov authored
      - [API] Rename "0-RTT" to "session resumption." In IETF QUIC, "0-RTT"
        always refers to early data, meaning a request that the server can
        reply to in the very first return flight.  A more appropriate name
        for what we support on the client site is "session resumption," which
        is standard TLS terminology.  Later, when we add support for 0-RTT
        (early data), we can use the 0-RTT terminology again, this time in
        proper context.
      - [BUGFIX] Do not set certificate callback if ea_lookup_cert is NULL.
      - [BUGFIX] Make connection tickable when it's marked as closed.
      - [BUGFIX] Fail certificate lookup if SNI is not present in HTTP mode.
      - Several documentation fixes and improvements.
      - Minor code cleanup.
      7483dee0
  2. 24 Jun, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.17.2 · da99665b
      Dmitri Tikhonov authored
      - [BUGFIX] Infinite loop in stream: advance read offset when discarding data.
      - [OPTIMIZATION] Header protection: only initialize cipher once.
      - [OPTIMIZATION] Batch header protection application.
      da99665b
  3. 18 Jun, 2020 2 commits
    • Dmitri Tikhonov's avatar
      Release 2.17.1: fix regression in 2.17.0 · e957eb06
      Dmitri Tikhonov authored
      e957eb06
    • Dmitri Tikhonov's avatar
      Release 2.17.0 · 4051ae3a
      Dmitri Tikhonov authored
      - [FEATURE] QUIC and HTTP/3 Internet Draft 29 support.
      - [BUGFIX] Check that scheduled packets are also sendable when
        calculating a connection's "tickable" property.
      - [BUGFIX] Don't count scheduled packets as in-flight when pacer is
        checked on tick.
      - gQUIC: delay calling on_new for pushed stream until headers are
        available.
      - Allow nested calls to lsquic_engine_connect().
      4051ae3a
  4. 15 Jun, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.16.3 · 307ca7fe
      Dmitri Tikhonov authored
      - [OPTIMIZATION] Stash up to two reordered packets in IETF mini conn
        instead of dropping them.
      - [BUGFIX] Crash: check decrypt context before using it.  This regression
        was introduced in 2.16.2.
      307ca7fe
  5. 12 Jun, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.16.2 · f913a297
      Dmitri Tikhonov authored
      - [BUGFIX] ID-28: do not use TLS middlebox compatibility mode in
        ClientHello.  This change requires using a newer version of BoringSSL.
      - [BUGFIX] Free connections in Advisory Tick Time Queue in engine dtor.
      - [BUGFIX] IETF QUIC client: narrow migration check to a single path.
      - [BUGFIX] NULL dereference: set function pointers for alarm for path
        challenges 2 and 3.
      - [BUGFIX] HTTP/3 headers may be followed immediately by trailers.
      - [BUGFIX] Log messages when SCID changes.
      f913a297
  6. 09 Jun, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.16.1 · 8ae5ecb4
      Dmitri Tikhonov authored
      - [FEATURE] Use "no-progress timeout" after which connection is closed.
      - [BUGFIX] Select new SCID when current SCID is retired.
      - [BUGFIX] Don't warn about dropped Initial packet sequence gaps during
        mini/full handoff.
      - [BUGFIX] Send correct conn error when HTTP/3 frame is truncated.
      - [BUGFIX] Mini conn: consider amplification when deciding to return
        TICK_SEND.
      - [BUGFIX] Don't double-count tag length in amplification logic.
      - [BUGFIX] Don't squeeze out lone path challenges.
      - [BUGFIX] Log messages dealing with scheduled packet queue squeezing.
      - [BUGFIX] don't wipe current path if no path challenge responses
        come back.
      - [BUGFIX] When path is reset, don't lose path_id which is used for
        logging.
      - Downgrade flow control violations to info log level from warnings.
      - Fix connection cap extra check, avoid checks in nested calls.
      - Fix some unit tests when extra checks are enabled.
      - Use ls-hpack 2.2.1.
      - Turn off unconditional extra checks for IETF clients.
      - Extra checks: don't verify sent size of hello packets.  Client
        changes DCID length and this check will fail.
      8ae5ecb4
  7. 03 Jun, 2020 1 commit
  8. 27 May, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.15.0 · fb73393f
      Dmitri Tikhonov authored
      - [FEATURE] QUIC and HTTP/3 Internet Draft 28 support.
      - [BUGFIX] Ignore Retry packets after other packets are decrypted
        successfully.
      - [BUGFIX] Transport parameter decoding: CID no longer has 4-byte
        length minimum.
      - http_client: fix and optimize lsxpack_header allocator.
      - Drop support for Internet Draft 25.
      fb73393f
  9. 19 May, 2020 1 commit
  10. 12 May, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.7 · b78e44ee
      Dmitri Tikhonov authored
      - [BUGFIX] ALPN-to-version mapping: do not skip h3-Q050.
      - [BUGFIX] Frame reader: skip headers if target stream is closed.
      b78e44ee
  11. 06 May, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.6 · b55a5117
      Dmitri Tikhonov authored
      - [BUGFIX] Fix amplification mitigation in 0-RTT case.
      - [BUGFIX] IETF mini connection should not tickable if cannot send
        a packet due to amplification.
      - [BUGFIX] Fail if active_connection_id_limit TP is smaller than 2.
      - [BUGFIX] Qlog server certificates for IETF QUIC connections.
      - [BUGFIX] Uninitialized struct padding usage in tokgen (benign).
      - [BUGFIX] Incorrect argument to shi_lookup() (benign).
      b55a5117
  12. 29 Apr, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.5 · 72585dc9
      Dmitri Tikhonov authored
      - [BUGFIX] In coalesced datagram, ignore packets whose CID does not match.
      - [BUGFIX] Frame reader: skip headers if target stream is not found.
      - [BUGFIX] Log message in QPACK decoder handler.
      72585dc9
  13. 24 Apr, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.4 · 1c105cf2
      Dmitri Tikhonov authored
      - [BUGFIX] Heed es_rw_once for pushed HTTP/3 streams.
      - [BUGFIX] IETF client: set correct flags on bidirectional streams.
      - [BUGFIX] Generate Cancel Stream QPACK instructions for abandoned
        streams.
      - [BUGFIX] Do not call header callbacks after stream is closed.
      - Use ls-qpack 2.1.1
      1c105cf2
  14. 15 Apr, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.3 · 08c45823
      Dmitri Tikhonov authored
      - [BUGFIX] gQUIC: pass correct stream to hsi_create_header_set() callback.
      - [BUGFIX] Use ls-hpack 2.1.1
      - Improve stream code readability.
      - Use ls-qpack 2.0.5
      08c45823
  15. 08 Apr, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.2 · 7ae4a10d
      Dmitri Tikhonov authored
      - [BUGFIX] Use ls-qpack 2.0.4
      - [BUGFIX] Honor max packet size on the client and when path changes.
      - http_server: fix prepare_decode() function.
      7ae4a10d
  16. 07 Apr, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.1 · 77a28812
      Dmitri Tikhonov authored
      - [BUGFIX] Place connections on tickable queue when sending is reenabled.
      - [BUGFIX] A connection is tickable if it has unsent packets.
      - [BUGFIX] Heed peer's max_packet_size transport parameter.
      77a28812
  17. 30 Mar, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.14.0 · 55613f44
      Dmitri Tikhonov authored
      - [API] Use lsxpack_header structure to send HTTP headers.
      - [OPTIMIZATION] nocopy's readable_bytes() function.
      - http_server: fix typo in error message
      - Use ls-hpack 2.1.0.
      - Use ls-qpack 2.0.0.
      55613f44
  18. 23 Mar, 2020 1 commit
  19. 13 Mar, 2020 1 commit
  20. 12 Mar, 2020 2 commits
    • Dmitri Tikhonov's avatar
    • Dmitri Tikhonov's avatar
      Release 2.13.0 · a5fa05f9
      Dmitri Tikhonov authored
      - [API] Use lsxpack_header structure to process incoming headers.
      - [BUGFIX] Fix assertion when zero-padding Initial packet.
      - [BUGFIX] Use idle timeout before we learn of peer's value.
      - Use ls-hpack 2.0.0 -- has lsxpack_header changes.
      - Use ls-qpack 0.14.0 -- new, common with ls-hpack, XXH seed (not used yet).
      - Code cleanup: prefix exported functions with "lsquic_".
      a5fa05f9
  21. 02 Mar, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.12.0 · afe3d363
      Dmitri Tikhonov authored
      - [FEATURE] QUIC timestamps extension.
      - [API] New: ea_alpn that is used when not in HTTP mode.
      - [BUGFIX] SNI is mandatory only for HTTP/3 and gQUIC.
      - [BUGFIX] Benign double-free -- issue #110.
      - [BUGFIX] Printing of transport parameters.
      afe3d363
  22. 24 Feb, 2020 2 commits
  23. 14 Feb, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.6 · aa820211
      Dmitri Tikhonov authored
      - [BUGFIX] HTTP/3 framing: don't misinterpret rare occurence as error.
      - [BUGFIX] Send gap warning due to missing poisoned packet.
      aa820211
  24. 13 Feb, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.5 · 1bdb91d1
      Dmitri Tikhonov authored
      - [BUGFIX] BBR: call cci_sent() with correct arguments and at correct time.
      - Refactor transport parameters module.
      - Minor code cleanup.
      1bdb91d1
  25. 11 Feb, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.4 · e68b0452
      Dmitri Tikhonov authored
      - [BUGFIX] Send HANDSHAKE_DONE only after Finished is received.
      - [BUGFIX] Don't treat garbage UDP padding as library error; ignore
        it instead.
      - [BUGFIX] Fix compilation on FreeBSD (missing header).
      e68b0452
  26. 31 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.3 · f2a7fa84
      Dmitri Tikhonov authored
      - [BUGFIX] Cancel path responses and challenges on old path when
        switching to new path.
      - Logging network path information.
      f2a7fa84
  27. 30 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.2 · 8c1565cb
      Dmitri Tikhonov authored
      - [BUGFIX] Do not delay ACKs for Initial and Handshake packets.
      - [BUGFIX] Send PATH_CHALLENGE if path changed before mini conn promotion.
      - Logging improvements.
      - http_client: discard data faster.
      8c1565cb
  28. 29 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.1 · 4ab453a1
      Dmitri Tikhonov authored
      - [BUGFIX] Coalesced packets could get longer than normal packet size.
      - Add spin bit configuration option es_spin (-o spin=[01]).
      - Disable spin bit in 1/16 of connections.
      - Improve logging a bit.
      4ab453a1
  29. 28 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.10.0 · 9fc12041
      Dmitri Tikhonov authored
      - [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.
      9fc12041
  30. 20 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.9.0 · fb96f4dd
      Dmitri Tikhonov authored
      - [API] Drop support for Q039.
      - Improve ACK-queuing logic.  Send an ACK once in a while if
        peer keeps on sending non-ack-eliciting packets.
      - Improve Alt-Svc string: Q050 and later are not included in
        the old-style "quic" string.
      - Send stateless resets if connection could not be promoted.
      - Schedule MAX_DATA if needed when DATA_BLOCKED is received.
      - Use ls-qpack 0.11.2 -- needed for server push optimization.
      - Code cleanup: handle some error cases, improve logging.
      fb96f4dd
  31. 16 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.8.9 · 10c41073
      Dmitri Tikhonov authored
      - [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.
      10c41073
  32. 14 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.8.8 · a4f5dac3
      Dmitri Tikhonov authored
      - [BUGFIX] Invalid read when parsing IETF transport parameters
        (this was benign).
      - [OPTIMIZATION] Frame bundling when using buffered packets in
        IETF QUIC: a) flush QPACK decoder stream and b) include ACKs
        in opportunistic fashion.
      - Fix HTTP/3 framing unit test.
      - Code cleanup.
      a4f5dac3
  33. 09 Jan, 2020 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.8.7 · 7d09751d
      Dmitri Tikhonov authored
      - [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.
      7d09751d
  34. 06 Jan, 2020 2 commits
    • Dmitri Tikhonov's avatar
      Release 2.8.5 · 72bbf1fb
      Dmitri Tikhonov authored
      - [BUGFIX] Fix unintended sign extension when removing header protection.
      72bbf1fb
    • Dmitri Tikhonov's avatar
      Release 2.8.4 · 747be414
      Dmitri Tikhonov authored
      - [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.
      - Code cleanup and minor fixes.
      747be414
  35. 30 Dec, 2019 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.8.1 · de46bf2f
      Dmitri Tikhonov authored
      - [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.
      de46bf2f
  36. 23 Dec, 2019 1 commit
    • Dmitri Tikhonov's avatar
      Release 2.8.0 · 7a8b2ece
      Dmitri Tikhonov authored
      - [FEATURE] Add support for Q050.
      - [OPTIMIZATION] Reduce mallocs in gQUIC handshake.
      - [BUGFIX] Disable redo of failed STREAM frame insertion with debug
        logging.
      7a8b2ece