Commit Graph

3607 Commits

Author SHA1 Message Date
Max Inden 9dbaff0ea1 chore: move common package data to workspace Cargo.toml 2024-07-26 23:46:17 +00:00
Max Inden ce97879e8d refactor: move rust-version to workspace Cargo.toml
Follow-up to suggestion in
https://github.com/quinn-rs/quinn/pull/1939#discussion_r1690309715.
2024-07-25 17:42:33 +00:00
Max Inden 2de91cfd7f chore(quinn): feature flag socket2 imports
The `socket2` imports are only used by the feature flagged `client` function.
Move the imports into the function to be feature flagged as well.

Avoids the following warning:

```
  --> quinn/src/endpoint.rs:28:15
   |
28 | use socket2::{Domain, Protocol, Socket, Type};
   |               ^^^^^^  ^^^^^^^^  ^^^^^^  ^^^^
   |
   = note: `#[warn(unused_imports)]` on by default
```
2024-07-25 17:41:04 +00:00
Dirkjan Ochtman 78fbceecf9 Remove now unused tarpaulin cfgs 2024-07-25 17:37:15 +00:00
Dirkjan Ochtman b8bd3d542d Set unexpected_cfgs for fuzzing 2024-07-25 17:37:15 +00:00
Benjamin Saunders d7abf0aaab Discard pre-handshake packets after the handshake
Attempting to parse frames from these non-frame-bearing packets was
responsible for some spurious connection failures in interop testing
under high packet loss.
2024-07-24 21:55:56 -07:00
Benjamin Saunders 2a3ef522af Raise default idle timeout to 30 seconds
Recommended in RFC9308 § 3.2 for use on the public internet when a NAT
may be on the path.
2024-07-24 20:51:55 -07:00
Dirkjan Ochtman 2677bce166 Trigger workflows for merge queue groups 2024-07-24 20:46:55 -07:00
Dirkjan Ochtman 55fd192343 Bump MSRV to 1.70 following tokio 1.39 2024-07-24 20:46:55 -07:00
Max Inden 061a74fb6e fix(udp): feature flag tracing in windows.rs
8712910a made `tracing` optional and added optional `log`, but forgot to update
`quinn-udp/src/windows.rs`. This commit fixes the oversight and bumps the
`quinn-udp` version to `v0.5.4`.
quinn-udp-0.5.4
2024-07-22 12:41:28 -07:00
Max Inden ff91ffe815 chore: increase quinn-udp version to v0.5.3 quinn-udp-0.5.3 2024-07-19 09:58:07 -07:00
Max Inden 8712910a4c deps(udp): make tracing optional and add optional log
This commit makes the `tracing` dependency in `quinn-udp` optional, but enabled
by default. In additional it adds optional logging via the `log` crate, enabled
through the `direct-log` feature. `tracing` takes precedence over `native-log`.
2024-07-19 09:58:07 -07:00
Max Inden 349dcd6017 refactor(udp): add use declaration for tracing debug and error 2024-07-19 09:58:07 -07:00
TirushOne 411abe9e1c Fix lack of reexport of ConnectionStats and ResetError (#1920) 2024-07-17 17:03:07 +02:00
Dirkjan Ochtman 3f489e2eab Use workspace dependencies for all external dependencies 2024-07-14 22:17:01 -07:00
Dirkjan Ochtman f484d633ef proto: bump version to 0.11.4 2024-07-12 22:41:01 +02:00
Dirkjan Ochtman f0fa66f871 proto: avoid overflow in handshake done statistic 2024-07-12 22:41:01 +02:00
Dirkjan Ochtman 32c2d914ad Bump MSRV to 1.67 (for cc) 2024-07-12 22:41:01 +02:00
Max Inden 36407fecc3 bench(udp): measure non-GSO & GSO on localhost (#1915)
This commit adds a basic benchmark, measuring the time to transfer 10
MiB with and without GSO on localhost.

```
gso_false/throughput    time:   [23.455 ms 25.230 ms 27.004 ms]
                        thrpt:  [370.31 MiB/s 396.35 MiB/s 426.35 MiB/s]

gso_true/throughput     time:   [1.0168 ms 1.1239 ms 1.2496 ms]
                        thrpt:  [7.8153 GiB/s 8.6889 GiB/s 9.6044 GiB/s]
```

```
$ cat /proc/cpuinfo
model name      : 12th Gen Intel(R) Core(TM) i9-12900HK
```

---

Given various optimizations for `localhost` traffic on Linux, we were
wondering whether GSO actually has an impact on `localhost`. According
to this benchmark: Yes it does.

For what a `localhost` network benchmark is worth, here it is. Feel free
to close in case it isn't useful.
2024-07-08 09:23:55 +02:00
Phoenix Kahlo 693c9b7cfb quinn: Make Endpoint::client dual-stack V6 by default 2024-07-03 17:32:25 -07:00
Benjamin Saunders fb63829dd1 Fix debug assert with reordered ACKs 2024-07-03 15:11:42 +02:00
Max Inden 7c4cce1370 docs: remove reference to sendmmsg
`sendmmsg` has been dropped in https://github.com/quinn-rs/quinn/commit/ee0882657a16a8ffd7ff5844f355caca519e63ce.

This commit removes left-over references to sendmmsg.
2024-07-02 19:27:28 -07:00
Phoenix Kahlo 02ed62142d docs(quinn): Revise SendStream.stopped docs comment 2024-07-01 11:24:50 -07:00
Phoenix Kahlo 9366f5e80b docs: Revise and add additionall 0-rtt doc comments 2024-07-01 11:24:50 -07:00
Phoenix Kahlo 715416a025 Fix unnecessary Incoming warning on Endpoint drop 2024-06-30 16:15:13 -07:00
Dirkjan Ochtman c445e9b8ff Upgrade to rustc-hash 2 2024-06-24 13:54:26 -07:00
Benjamin Saunders bc150927d8 Wake blocked streams on 0-RTT rejection 2024-06-23 10:07:03 -07:00
Dirkjan Ochtman 70f5194fc8 quinn: introduce wake_stream() helper 2024-06-23 09:59:12 -07:00
Dirkjan Ochtman 0273e0a704 quinn: introduce wake_all() helper 2024-06-23 09:59:12 -07:00
Adolfo Ochagavía e7505be795 Allow configuring rng seed through EndpointConfig 2024-06-20 23:01:47 -07:00
LAN Xingcan 03fe15f99e proto: make initial destination cid configurable 2024-06-20 18:46:11 -07:00
Max Inden 9e2272a477 refactor: use workspace dependency for tracing and tracing-subscriber 2024-06-20 18:23:04 -07:00
Max Inden 8f3f8242c9 fix: remove unused dependency tracing-attributes
Various `quinn*` crates depend on `tracing`. `tracing` in its default feature
set includes `tracing-attributes` in order to expose `#[instrument]` procedural
macro in `tracing::instrument`.

None of `quinn*` make use of the `#[instrument]` macro. Thus the
`tracing-attributes` dependency is unused.

To remove the dependency from the tree, this commit restricts `tracing`'s
`features` to `std`, effectively removing the `attributes` feature.
2024-06-20 18:23:04 -07:00
Benjamin Saunders c7a2c40305 Only send MAX_STREAMS when >1/8 of flow control window is consumed 2024-06-17 10:14:36 +02:00
Benjamin Saunders 0e621dfb22 Infer need for MAX_STREAMS from change in limit 2024-06-17 10:14:36 +02:00
Benjamin Saunders 99ddbefac1 Track most recently sent MAX_STREAMS value per direction 2024-06-17 10:14:36 +02:00
Dirkjan Ochtman 7b97a3fbd8 Apply clippy suggestions from Rust 1.79 2024-06-13 10:59:05 -07:00
Phoenix Kahlo 11050d6fe3 docs(quinn): Clarify effects of setting AckFrequencyConfig 2024-06-08 19:10:26 -07:00
Dirkjan Ochtman f117a7430c udp: bump version to 0.5.2 quinn-0.11.2 quinn-proto-0.11.3 quinn-udp-0.5.2 2024-06-07 23:10:19 +02:00
Dirkjan Ochtman 253e63aba4 Bump version numbers (quinn 0.11.2, -proto 0.11.3) 2024-06-07 13:51:24 -07:00
Benjamin Saunders 809cf79336 Resolve stopped/received_reset futures on lost connections
If a connection is lost before a stream becomes closed, these would
otherwise never complete.
2024-06-07 06:41:58 +02:00
Max Inden c66f45e985 docs(udp): replace AsRawFd and AsRawSocket with AsFd and AsSocket 2024-06-06 12:57:54 -07:00
Charlie Root 2ad6dbbdcf Fix openbsd: no support for DONTFRAG on IPv4 2024-06-02 11:23:22 -07:00
Floris Bruynooghe 72ef0c0f16 Support netbsd
NetBSD does not support DONTFRAG or ECN on IPv4, but does for IPv6.
It has recvmmsg.
2024-06-02 11:23:22 -07:00
Benjamin Saunders b55ec29251 Fix panic on multiple incoming connections w/ zero-length IDs 2024-05-30 10:08:41 +02:00
Benjamin Saunders 3437e19a59 Convert test EndpointFactory from tuple struct to braced struct
Groundwork for expanding configurability of common test setup logic.
2024-05-30 10:08:41 +02:00
Benjamin Saunders e107643060 Fix packet dispatch for outgoing connections with zero-length CIDs 2024-05-30 10:08:41 +02:00
Benjamin Saunders 772c269c8d Fix panic in example due to unset default crypto provider 2024-05-24 20:43:35 +02:00
Benjamin Saunders 9229c37362 Fix double indirect call in default CID generator factory
A lambda expression is a unique ZST, but coercing it to a function
pointer discards that information.
0.11.2
2024-05-23 07:02:08 +02:00
Benjamin Saunders 70f5f6d183 Make ConnectionIdParser object-safe, and accept trait object impls 2024-05-23 07:02:08 +02:00