Philipp Krüger c38be740eb refactor(proto): Extract address canonicalization and local socket family detection into fns (#346)
* fix(proto): Don't close paths from previous HP round we're still interested in

* Use local/remote instead of src/dst in 4-tuple logs

* Don't clear all path timers in `close_path`.

* Also check for `!self.abandoned_paths.contains(&path_id)`

* refactor(proto): Canonicalize IP addrs early for HP state

* Spellcheck

* Revert canonicalization to the right places again.

We don't want to canonicalize when adding local addresses, since there might be NAT46 between us and the peer.
We also don't want to canonicalize right when we receive ADD_ADDRESS frames, since that has an effect on maximum number of addresses calculations.

* Preserve address mapping invariant in `iroh_hp::NatTraversalRound`

* Update doc comments

* Map ipv6-mapped IPv4 addresses to IPv4 if possible/necessary

* Don't convert `::1` to `127.0.0.1` in `map_to_local_socket_family`

Also: add a test case

* Prefer `Ipv4Addr::to_ipv4_mapped`
2026-01-26 15:40:10 +00:00
2025-12-02 12:11:05 +01:00
2026-01-09 07:35:28 +01:00
2025-03-24 15:57:34 +00:00
2020-01-27 10:21:10 -08:00
2025-12-02 13:24:18 +01:00
2025-12-02 12:39:06 +00:00
2025-02-23 11:52:46 +00:00

Iroh Quinn

This is a fork based on quinn, maintained by n0. Currently published to crates.io under iroh-quinn.

Main differences to upstream quinn

  • Small API improvements
  • Implements additional QUIC extensions
    • Multipath
    • QAD
    • QNT
  • Expanded support for QLOG

Quinn is a pure-rust, async-compatible implementation of the IETF [QUIC][quic] transport protocol.

  • Simultaneous client/server operation
  • Ordered and unordered stream reads for improved performance
  • Works on stable Rust, tested on Linux, macOS and Windows
  • Pluggable cryptography, with a standard implementation backed by [rustls][rustls] and [ring][ring]
  • Application-layer datagrams for small, unreliable messages
  • Future-based async API
  • Minimum supported Rust version of 1.83.0

License

Copyright 2025 The quinn developers Copyright 2025 N0, INC.

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

S
Description
noq, a QUIC implementation in Rust
Readme 107 MiB
Languages
Rust 99.3%
Python 0.5%
Shell 0.2%