Frando c3d26e4fc5 test(proto): abandoned-path in-flight retransmission
Three tests for the previous two commits, next to the existing abandon
tests in multipath.rs:

- abandoned_path_in_flight_retransmits_after_pto_delay: stream data
  lost on path 0, path 0 abandoned, all server-to-client traffic
  dropped from then on so the PathDrained cleanup never arms. Only the
  declare-in-flight-lost timer can free the data; asserts it has not
  fired below the 2*PTO lower bound (probed via handle_timeout without
  advancing the clock) and that the data arrives over path 1 after it.
  Fails on main (data stranded forever) and on the immediate variant
  (retransmit before the deadline).

- abandoned_path_acked_in_flight_not_retransmitted: the flight's
  delayed acknowledgment is in the client's inbound queue when the
  path is abandoned; processing it during the window leaves nothing to
  declare lost, so no stream frame is sent twice. Fails on the
  immediate variant - this is the reason the declare-lost is deferred.

- abandoned_path_partially_acked_retransmits_only_rest: two flights in
  the air at abandon time, the first acknowledged mid-window and the
  second lost; exactly one stream frame is retransmitted. Also covers
  the deadline surviving mid-window ACK processing
  (set_loss_detection_timer leaving abandoned paths alone).

Verified against both predecessors: on main (5cf07f483) the first test
fails, on the immediate declare-lost variant (630db780d) all three
fail; on this branch 390/390 pass.
2026-07-27 10:01:36 +02:00
2026-02-06 10:04:56 +00:00
2025-03-24 15:57:34 +00:00
2026-07-20 19:54:00 +00:00
2026-03-09 14:40:18 +01:00
2020-01-27 10:21:10 -08:00
2026-03-09 14:45:33 +01:00
2025-02-23 11:52:46 +00:00

noq

Documentation Crates.io Chat License: MIT License: Apache 2.0

General purpose implementation of the QUIC transport protocol in pure Rust. Noq is built as an async-friendly API in the noq crate on top of a sans-io protocol library in noq-proto.

Noq started out as a fork of the excellent Quinn project. The main focus of development has been towards adding support for more QUIC (draft) extensions:

Features

  • Easy to use futures-based async API.
  • Client and server server functionality.
  • 0-RTT and 0.5-RTT data support.
  • Ordered and unordered stream reads.
  • Custom and zero-length connection identifiers.
  • Fully pluggable crypto API with a Rustls implementation using ring or aws-lc-rs provided by default for convenience.
  • Broad platform support, including Linux, Windows, macOS, android, iOS and wasm.

Standards

The noq library aims to be correct implementation of various QUIC standards:

Getting started

Examples at https://github.com/n0-computer/noq/blob/main/noq/examples

$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml

This launches an HTTP 0.9 server over the QUIC transport on the loopback address serving the current working directory, with the client fetching ./Cargo.toml. By default, the server generates a self-signed certificate and stores it to disk, where the client will automatically find and trust it.

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 106 MiB
Languages
Rust 99.3%
Python 0.5%
Shell 0.2%