Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
17c9be6
Take boxed connection ID generator factories
Ralith Apr 17, 2026
c1d7ed2
quinn: move ConnectionRef/EndpointRef ref counts onto Shared as Atomi…
dignifiedquire Apr 22, 2026
fe9e1e7
refactor(quinn-udp): extract `decode_socket_addr` helper
larseggert Dec 9, 2025
a22790d
refactor(quinn-udp): extract `ControlMetadata` helper
larseggert Dec 9, 2025
6127c0f
refactor(quinn-udp): split fast&slow send/recv paths
larseggert Dec 9, 2025
74fdd77
add metric for spurious congestion events
stormshield-fabs Feb 27, 2026
72400f3
fix(perf): suppress table output in JSON mode
Zotyamester Feb 27, 2026
f52aa14
feat(quinn-udp): make Apple fast datapath opt-in
larseggert Feb 9, 2026
bd83f7e
docs: fix book build with mdbook 0.5.2
djc Mar 9, 2026
db87183
fix: reuse existing socket for probing GRO/GSO support
thomaseizinger Mar 10, 2026
5ec5e64
refactor: remove `gro` module
thomaseizinger Mar 16, 2026
dfa247c
fix: remove opportunistic GRO syscall
thomaseizinger Mar 17, 2026
1fdd690
docs(quinn): improve `Connection::close_reason()` documentation
zphrs Mar 17, 2026
476c7bc
docs: clarify that `Event::ConnectionLost` is not emitted on local close
alexchenai Mar 19, 2026
ef2be07
quinn: Make Endpoint::server dual-stack V6 by default
Mar 18, 2026
609ddba
refactor(quinn-udp): add `retry_if_interrupted` helper
larseggert Mar 23, 2026
bee7381
fix(unix): disable GSO after probing
thomaseizinger Mar 24, 2026
c435c08
fix: Resolve `sendmsg_x`/`recvmsg_x` via `dlsym`
larseggert Mar 23, 2026
cd3c8c7
proto: send STREAMS_BLOCKED when stream limit is hit (#2579)
cong-or Mar 31, 2026
8b2023a
Introduce `max_outgoing_bytes_per_second` option
aochagavia Mar 6, 2026
d4f61c1
Upgrade rustls-platform-verifier to 0.7
djc Apr 12, 2026
93a2710
chore: bump rustls-webpki to 0.103.13 (RUSTSEC-2026-0104)
dignifiedquire Apr 22, 2026
8a8119b
chore: clean up stale deny.toml entries (unused license/skips)
dignifiedquire Apr 22, 2026
79b20f4
fix: gate perf Path import on json-output + restore deny.toml entries
dignifiedquire Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 55 additions & 84 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ rustc-hash = "2"
rustls = { version = "0.23.33", default-features = false, features = ["std"] }
rustls-pemfile = "2"
rustls-pki-types = "1.7"
rustls-platform-verifier = "0.6"
rustls-platform-verifier = "0.7"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1"
slab = "0.4.9"
Expand Down
5 changes: 1 addition & 4 deletions deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ allow = [
"ISC",
"MIT",
"NCSA",
"OpenSSL",
"OpenSSL", # aws-lc-fips-sys
"Unicode-3.0",
"Zlib", # foldhash, dependency of fastbloom
]
Expand All @@ -28,9 +28,6 @@ skip = [
# ring uses getrandom 0.2, newer crates use 0.3
{ crate = "getrandom", reason = "ring depends on 0.2, newer ecosystem uses 0.3" },
{ crate = "r-efi", reason = "proptest dev-dependency pulls in old getrandom" },
# jni and redox_users use thiserror 1.x
{ crate = "thiserror", reason = "transitive deps use thiserror 1.x" },
{ crate = "thiserror-impl", reason = "follows thiserror" },
# follows getrandom versions
{ crate = "wasi", reason = "follows getrandom version split" },
# various transitive deps require different windows-sys versions
Expand Down
1 change: 0 additions & 1 deletion docs/book/book.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[book]
authors = ["Timon Post"]
language = "en"
multilingual = false
src = "src"
title = "noq"
6 changes: 3 additions & 3 deletions noq-proto/src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ impl EndpointConfig {
/// information in local connection IDs, e.g. to support stateless packet-level load balancers.
///
/// Defaults to [`HashedConnectionIdGenerator`].
pub fn cid_generator<F: Fn() -> Box<dyn ConnectionIdGenerator> + Send + Sync + 'static>(
pub fn cid_generator(
&mut self,
factory: F,
factory: Arc<dyn Fn() -> Box<dyn ConnectionIdGenerator> + Send + Sync>,
) -> &mut Self {
self.connection_id_generator_factory = Arc::new(factory);
self.connection_id_generator_factory = factory;
self
}

Expand Down
15 changes: 15 additions & 0 deletions noq-proto/src/config/transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ pub struct TransportConfig {
pub(crate) mtu_discovery_config: Option<MtuDiscoveryConfig>,
pub(crate) pad_to_mtu: bool,
pub(crate) ack_frequency_config: Option<AckFrequencyConfig>,
pub(crate) max_outgoing_bytes_per_second: Option<u64>,

pub(crate) persistent_congestion_threshold: u32,
pub(crate) keep_alive_interval: Option<Duration>,
Expand Down Expand Up @@ -272,6 +273,14 @@ impl TransportConfig {
self
}

/// Configures an outbound rate limit (in bytes per second) for each connection.
///
/// Defaults to `None`, which disables rate limiting.
pub fn max_outgoing_bytes_per_second(&mut self, value: Option<u64>) -> &mut Self {
self.max_outgoing_bytes_per_second = value;
self
}

/// Number of consecutive PTOs after which network is considered to be experiencing persistent congestion.
pub fn persistent_congestion_threshold(&mut self, value: u32) -> &mut Self {
self.persistent_congestion_threshold = value;
Expand Down Expand Up @@ -558,6 +567,7 @@ impl Default for TransportConfig {
mtu_discovery_config: Some(MtuDiscoveryConfig::default()),
pad_to_mtu: false,
ack_frequency_config: None,
max_outgoing_bytes_per_second: None,

persistent_congestion_threshold: 3,
keep_alive_interval: None,
Expand Down Expand Up @@ -606,6 +616,7 @@ impl fmt::Debug for TransportConfig {
mtu_discovery_config,
pad_to_mtu,
ack_frequency_config,
max_outgoing_bytes_per_second,
persistent_congestion_threshold,
keep_alive_interval,
crypto_buffer_size,
Expand Down Expand Up @@ -641,6 +652,10 @@ impl fmt::Debug for TransportConfig {
.field("mtu_discovery_config", mtu_discovery_config)
.field("pad_to_mtu", pad_to_mtu)
.field("ack_frequency_config", ack_frequency_config)
.field(
"max_outgoing_bytes_per_second",
max_outgoing_bytes_per_second,
)
.field(
"persistent_congestion_threshold",
persistent_congestion_threshold,
Expand Down
Loading
Loading