Skip to content

Releases: quinn-rs/quinn

quinn-udp 0.5.5

03 Sep 09:22
@djc djc
quinn-udp-0.5.5
Compare
Choose a tag to compare

What's Changed

quinn-proto-0.11.8, quinn 0.11.5

03 Sep 08:56
@djc djc
quinn-proto-0.11.8
7c09b02
Compare
Choose a tag to compare

What's Changed

  • proto: avoid panicking on rustls server config errors by @djc in #1977
  • Version bump quinn to enforce patched quinn-proto by @finnbear in #1979
  • proto: bump version to 0.11.8 for release by @djc in #1981

quinn-proto-0.11.7, quinn 0.11.4

02 Sep 09:15
@djc djc
quinn-proto-0.11.7
Compare
Choose a tag to compare

This releases fixes a server-side denial of service attack first introduced in 0.11.0, tracked as GHSA-vr26-jcq5-fjj8.

What's Changed

quinn-proto-0.11.6 & quinn 0.11.3

02 Sep 09:15
@djc djc
Compare
Choose a tag to compare

What's Changed

  • Revert "Expose the Handshake Confirmed state" by @Ralith in #1957

quinn-proto 0.11.5

02 Sep 09:14
@djc djc
Compare
Choose a tag to compare

What's Changed

quinn-proto 0.11.4

02 Sep 09:14
@djc djc
Compare
Choose a tag to compare

What's Changed

  • Fix panic in example due to unset default crypto provider by @Ralith in #1882
  • Fix zero-length connection IDs by @Ralith in #1883
  • Add support for NetBSD, fix OpenBSD by @flub in #1884
  • docs(udp): replace AsRawFd and AsRawSocket with AsFd and AsSocket by @mxinden in #1890
  • Resolve stopped/received_reset futures on lost connections by @Ralith in #1886
  • Bump version numbers (quinn 0.11.2, -proto 0.11.3) by @djc in #1891
  • udp: bump version to 0.5.2 by @djc in #1892
  • docs(quinn): Clarify effects of setting AckFrequencyConfig by @gretchenfrage in #1894
  • Apply clippy suggestions from Rust 1.79 by @djc in #1895
  • Only send MAX_STREAMS when >1/8 of flow control window is consumed by @Ralith in #1898
  • fix: remove unused dependency tracing-attributes by @mxinden in #1903
  • proto: make initial destination cid configurable by @thynson in #1897
  • Allow configuring rng seed through EndpointConfig by @aochagavia in #1901
  • quinn: introduce waking helpers by @djc in #1908
  • Wake blocked streams on 0-RTT rejection by @Ralith in #1905
  • Upgrade to rustc-hash 2 by @djc in #1909
  • Fix unnecessary Incoming warning on Endpoint drop by @gretchenfrage in #1907
  • Revise and add additional 0-rtt doc comments by @gretchenfrage in #1826
  • docs: remove reference to sendmmsg by @mxinden in #1914
  • Fix debug assert with reordered ACKs by @Ralith in #1893
  • quinn: Make Endpoint::client dual-stack V6 by default by @gretchenfrage in #1913
  • bench(udp): measure non-GSO & GSO on localhost by @mxinden in #1915
  • proto: avoid overflow in handshake done statistic by @djc in #1918
  • Use workspace dependencies for all external dependencies by @djc in #1919
  • Fix lack of reexport of ConnectionStats and ResetError by @TirushOne in #1920
  • [non-breaking] deps(udp): make tracing optional and add optional log by @mxinden in #1923
  • fix(udp): feature flag tracing in windows.rs by @mxinden in #1932
  • Bump MSRV to 1.70 following tokio 1.39 by @djc in #1939
  • Raise default idle timeout to 30 seconds by @Ralith in #1938
  • Discard pre-handshake packets after the handshake by @Ralith in #1937
  • Apply suggestions from Clippy 1.80 by @djc in #1941
  • chore(quinn): feature flag socket2 imports by @mxinden in #1933
  • refactor: move rust-version to workspace Cargo.toml by @mxinden in #1940
  • chore: move common package data to workspace Cargo.toml by @mxinden in #1943
  • Endpoint stats interface by @ryleung-solana in #1900
  • Expose the Handshake Confirmed state by @Ralith in #1944
  • Exclude metrics with freestanding getters from EndpointStats by @Ralith in #1945
  • Fix incorrect initial DCID indexing on retried connections by @Ralith in #1946
  • Add expect message to unwrap in PacketBuilder by @casey in #1951
  • Revert "proto: yield transport error for Initial packets with no CRYPTO" by @Ralith in #1952
  • refactor(udp): introduce log facade by @mxinden in #1935
  • Update cargo-deny-action to v2 by @djc in #1953
  • quinn: bump version to 0.11.3 by @djc in #1954

quinn-proto 0.11.3

02 Sep 09:12
@djc djc
quinn-proto-0.11.3
Compare
Choose a tag to compare

What's Changed

  • Fix panic in example due to unset default crypto provider by @Ralith in #1882
  • Fix zero-length connection IDs by @Ralith in #1883
  • Add support for NetBSD, fix OpenBSD by @flub in #1884
  • docs(udp): replace AsRawFd and AsRawSocket with AsFd and AsSocket by @mxinden in #1890
  • Resolve stopped/received_reset futures on lost connections by @Ralith in #1886
  • Bump version numbers (quinn 0.11.2, -proto 0.11.3) by @djc in #1891
  • udp: bump version to 0.5.2 by @djc in #1892

quinn-proto 0.11.2, quinn 0.11.1, quinn-udp 0.5.1

24 May 08:02
@djc djc
0.11.2
Compare
Choose a tag to compare

A collection of smaller fixes and improvements, including those in quinn 0.11.1 and quinn-udp 0.5.1.

Thanks to all contributors!

What's Changed

  • Test voluntary acks when sending max-size datagrams by @Ralith in #1856
  • Clarify Connection::space_can_send logic by @Ralith in #1851
  • Fix previous path validation allowing flows to be linked across migration by @Ralith in #1857
  • proto: allow rustls::ClientConfig without initial suite by @djc in #1859
  • Reduce black hole detection false positives by @Ralith in #1858
  • Centralize and update local_ip platform support documentation by @Ralith in #1868
  • Relax unnecessary unique borrow by @Ralith in #1871
  • Fix bytes read count in ReadExactError::FinishedEarly by @Ralith in #1875
  • Support openbsd by @flub in #1863
  • proto: make NoInitialCipherSuite Copy by @djc in #1876
  • Fix stopped recv stream flow control underflow under reordering by @Ralith in #1869
  • Trivial SendStream error cleanup by @Ralith in #1872
  • Simpler and more precise ID flow control update check in Chunks by @Ralith in #1874
  • Introduce RecvStream::received_reset by @Ralith in #1873
  • proto: make PartialDecode API public by @thynson in #1865
  • Make ConnectionIdParser object-safe, and accept trait object impls by @Ralith in #1878

0.11.1

08 May 22:23
Compare
Choose a tag to compare

This release addresses two regressions in 0.11:

Fixes

  • Fix corruption of trailing packet in truncated GSO batch by @ylht in #1853
  • Suppress ACK-only packet sanity-check when datagrams are queued by @Ralith in #1854

New Contributors

Full Changelog: 0.11.0...0.11.1

0.11.0

06 May 21:46
@djc djc
Compare
Choose a tag to compare

A year after the release of 0.10.0 of Quinn, our popular community-oriented pure-Rust implementation of QUIC, we have a slew of improvements. The highlights are an upgrade to rustls 0.23 and ring 0.17 (which unfortunately got delayed by incompatibilities introduced in the rustls 0.22), a new API to triage incoming connections and a number of performance improvements. The quinn-udp crate has seen a lot of improvements, including much improved Windows support.

We've recently started an OpenCollective account which we hope commercial organizations relying on Quinn will donate to in order to support ongoing development and maintenance of the project. Since the previous major release, we've also started a Discord channel which has become the preferred (synchronous/ephemeral) communication channel for the project.

This release supports Rust 1.66 and newer.

Thanks to all contributors on behalf of the Quinn team, @Ralith and @djc!

Notable changes

Performance

  • Transmit directly from connection tasks by @Ralith in #1729
  • #729: proto: write outgoing packets to caller-supplied memory by @lmpn in #1697
  • udp: add support for ECN, local addrs, GSO, and GRO on Windows by @stormshield-damiend in #1701
  • Don't allocate an endpoint response buffer for every driver wakeup by @Ralith in #1730
  • Defer initial packet payload decryption until after accept by @Ralith in #1804
  • Perform early first-packet validation before decryption by @Ralith in #1789
  • Allocate Incoming response buffers as needed by @Ralith in #1811
  • Match GSO segment size to the first datagram, not the MTU by @Ralith in #1837

Features

Fixes

  • Use boxed AsyncUdpSocket when creating abstract endpoint by @tthebst in #1595
  • fix: Make new_with_abstract public again by @tthebst in #1596
  • Preserve the tracing span in the EndpointDriver task by @flub in #1616
  • Mitigate optimistic ACK attacks by @Ralith in #1613
  • set may_fragment based on whether setting IP_DONTFRAG fails with ENOPROTOOPT. by @jieliangma in #1626
  • udp: don't log EMSGSIZE errors by @Ralith in #1635
  • Propagate current tracing span to spawned connection drivers by @Ralith in #1632
  • proto: Fix double-boxing of congestion::ControllerFactory by @Ralith in #1641
  • proto: don't panic when draining an unknown connection by @Ralith in #1645
  • Require explicit timestamp for Endpoint::connect(), Rust 1.72 by @djc in #1649
  • Add missing export for proto::AckFrequencyConfig. by @stormshield-damiend in #1651
  • silent an info message related to ack frequency. by @stormshield-damiend in #1652
  • Generalize UdpStats::transmits to ios by @Ralith in #1655
  • Send ACK_FREQUENCY frames intelligently rather than spamming IMMEDIATE_ACK by @Ralith in #1656
  • Pass byte read count to FinishEarly by @rom1v in #1666
  • Fix ACK frequency extension corner case by @Ralith in #1672
  • Yield protocol violation for packets without frames by @djc in #1693
  • Make quinn-proto::{Connection, Endpoint} deterministic by @michael-yxchen in #1691
  • proto: add a way to configure the minimum MTU change needed to stop the binary search used during the MTU discovery phase. by @stormshield-damiend in #1702
  • Validate 0-RTT frames based on packet type, not handshake progress by @Ralith in #1722
  • proto: yield transport error for Initial packets with no CRYPTO by @djc in #1721
  • Send path validation responses to the correct remote by @Ralith in #1746
  • fix(quinn-udp): use TOS for IPv4-mapped IPv6 dst addrs by @mxinden in #1765
  • Improve reliability of Close delivery during handshakes by @Ralith in #1767
  • Don't double-count buffer consumption in close length checks by @Ralith in #1768
  • Improve behavior when only one peer sends ACK-eliciting packets by @Ralith in #1761
  • Fix constant of frame_type IMMEDIATE_ACK by @nemethf in #1774
  • Bound memory use in RETIRE_CONNECTION_ID frame queue by @Ralith in #1787
  • Add missing transport parameter validation checks by @Ralith in #1791
  • Rate-limit stateless resets by @Ralith in #1794
  • Use the correct MTU for prev_path by @nemethf in #1776
  • Break linkability on client-side after planned migration by @nemethf in #1800
  • Allow packets with impossible CIDs to be ignored rather than reset by @Ralith in #1796
  • Make quinn_proto::Connection and quinn_proto::Endpoint impl Sync by @Pixelstormer in #1769
  • Refuse incoming/forbid outgoing connections after endpoint is closed by @Ralith in #1829
  • Socket rebind: drain old socket by @nemethf in #1801
  • Accept connections with unrecognized address validation tokens by @Ralith in #1790
  • Fix race condition between 0-RTT and Incoming by @gretchenfrage in #1821
  • Fix minor datagram send bugs by @Ralith in #1836

Miscellaneous

Read more