Commit Graph

112 Commits

Author SHA1 Message Date
Frando 4bdbf365a1 enable trace logging for patchbay tests 2026-03-23 09:01:49 +01:00
Frando ddf4a4d194 deps: bump patchbay 2026-03-20 15:12:55 +01:00
Frando 32e05c027b tests: add patchbay tests 2026-03-20 12:54:39 +01:00
dignifiedquire faeddf58ee chore: Release 2026-03-09 14:41:38 +01:00
Philipp Krüger 13a1c456f5 feat!: Allow compiling with rustls, but without any crypto providers compiled into rustls (#462)
* Switch to `aes-gcm` crate for retry token logic when using rustls

* Split `rustls-ring` and `rustls-aws-lc-rs` features into `rustls`, `ring` and `aws-lc-rs` features.

* Better document the features.

* `cargo make format`

* Fix outdated feature references

* Avoid double-defining `configured_provider`

* File an issue about suddenly working PQC handshakes now breaking a test

* Fix rebase

* Only enable `aes-gcm` dependency when needed

* Add features for backwards compatibility

* Add some links to the spec's retry packet integrity section
2026-03-02 11:56:51 +00:00
Friedel Ziegelmayer 294e3ea603 refactor!: rename to noq (#461)
* refactor!: rename to noq

* fixup python scripts

* fixup

* fixup

* fixup: cr
2026-02-27 14:57:21 +00:00
Diva Martínez d29726a1fa fix! make Path::close completely sync (this never returned in the happy case) (#419)
* remove PathEvent::Closed

* add test

* remove unused public api types

* spelling

* make test finish reliably
2026-02-10 15:46:17 +00:00
Friedel Ziegelmayer 708a6a0119 fix(quinn-udp): more wine fixes (#414)
* fix(quinn-udp): disable IP_PKTINFO under Wine

Wine's IP_PKTINFO implementation maps Linux's ipi_addr (the IP header
destination address) to Windows' IN_PKTINFO.ipi_addr. On multi-homed hosts,
ipi_addr and ipi_spec_dst (the local address) can differ, causing QUIC to
discard packets with 'sent to incorrect interface'.

This commit:
- Detects Wine at runtime via ntdll.dll's wine_get_version export
- Disables pktinfo when running under Wine (both send and recv paths)
- Exports is_wine() from the crate for use by downstream tests
- Skips the local_ip assertion in echo tests under Wine
- Upgrades windows-sys to 0.61

See:
- Wine's convert_control_headers(): https://github.com/wine-mirror/wine/blob/master/dlls/ntdll/unix/socket.c
- Linux in_pktinfo fields: https://man7.org/linux/man-pages/man7/ip.7.html
- Windows IN_PKTINFO: https://learn.microsoft.com/en-us/windows/win32/api/ws2ipdef/ns-ws2ipdef-in_pktinfo

* apply CR

* fixup

* cleanup
2026-02-06 17:24:48 +00:00
Friedel Ziegelmayer 1a91e0b538 fix: update time dep to address RUSTSEC-2026-0009 (#412) 2026-02-06 09:17:27 +00:00
Diva Martínez 7cabfe8392 tests: introduce ConnPair and testresult to simplify tests (#408)
* add basic struct and methods

* dispatch using side

* use ConnPair in multipath tests

* use `Side` variants directly

* add testresult to dev deps

* always use time from underlying pair

* use ConnPair in multipath tests even if they don't use multipath_pair

* use stats(side) directly

* introduce ConnPair::connect_with

* introduce ConnPair::with_default_endpoint

* reduce LOCs

* introduce ConnPair::with_transport_cfg for even less noise

* only keep the public api

* fmt

* take advantage of derive_more

* add some basic docs

* revert weird windows update
2026-02-05 16:33:45 +00:00
Diva Martínez b5e2b8f0e3 update bytes to address advisory RUSTSEC-2026-0007 (#405) 2026-02-03 16:33:31 +00:00
“ramfox” 4695fbfe1f chore: Release 2026-01-31 13:49:00 -05:00
“ramfox” d1c70a87d0 chore: Release 2026-01-31 13:48:45 -05:00
“ramfox” e41672537d chore: Release 2026-01-28 11:10:17 -05:00
“ramfox” 349e82913a chore: Release 2026-01-28 11:09:42 -05:00
“ramfox” 086cf769b3 chore: Release 2026-01-28 11:01:36 -05:00
Rüdiger Klaehn 1df76577f7 tests: Add proptest arbitraries for various quinn-proto types and implement encoder roundtrip tests. (#325)
* Add proptests for encode/decode

* Add proptest arbitrary for VarInt and StreamId

Also fix the StreamId arbitrary::Arbitrary generation

* Add proptest arbitraries for various quinn-proto types and make use of them in the random interaction test

* Add more arbitraries.

* Remove unneeded derives

* Use MaybeFrame arb

* fmt

* Use cfg(test) for the arbitraries.

Also move the encode_decode tests into a separate file.

* Add more cases to TestFrame

* Get rid of the last remaining record enum cases.

* More arbitraries. Now almost every frame type is roundrrip tested.

* remove dead code

* clippy

* Add proptest and test-strategy even in wasm

(we don't *run* proptests, but need them to compile)

* Use a feature flag after all...

going in circles...

* Remove claude settings and DRY the proptest attribute.

* Revert "Use a feature flag after all..."

This reverts commit b27add632b.

* Try to get proptest to work in wasm after all

It doesn't need to run tests, just compile.

* Use the right hmac import

* sort dev deps

* Remove some feature flag gated imports

they are not worth it in terms of DRY

* Use test_strategy::Arbitrary by default in frame. It gets used way more often.
2026-01-19 09:35:31 +00:00
ramfox d5287455b6 chore: release v0.15.0
`cargo release` command successfully published the crates, but the
commit created by `cargo release` to update the version numbers was
rejected, because I don't have permissions to push to the `main` branch
directly.

These are the appropriate changes to ensure the version numbers in our
code align with the released crates.
2026-01-09 07:35:28 +01:00
dignifiedquire bacde87c71 refactor(quinn-proto): use enum-assoc instead of manual macro for frametype 2026-01-07 11:47:44 +01:00
Ruediger Klaehn 0234c4a09e Switch to criterion here as well 2025-12-16 14:05:27 +02:00
Ruediger Klaehn 41dce79883 Merge branch 'main-iroh' into fix-send-buffer 2025-12-16 12:37:49 +02:00
Rüdiger Klaehn 65c66d5929 deps: switch to criterion for benching (#262)
* Switch from bencher to criterion

* clippy

* MSRV
2025-12-16 10:24:03 +00:00
Ruediger Klaehn c8d73c1076 Convert many_small_writes_delayed_acks into a bench 2025-12-12 15:00:36 +02:00
Diva Martínez a688a24072 refactor: create PathChallenge and PathResponse types (#240)
* create PathChallenge and PathResponse

* Small fixes
2025-12-10 21:32:56 +00:00
Philipp Krüger 5e51c98783 test: Add code to programmatically generate interaction patterns with quinn-proto (#193)
* fix: Don't allow sending path status frames on non-multipath connections

* fix: Ignore PATH_ACKs on abandoned paths

* test: Implement a quinn-proto multipath proptest & add regression tests

* Restructure proptests, fix "invalid key" access in test endpoints

* Turn of MTUD

* Add another regression test

* fix: Correctly check `space.rx_packet` in key updates

Also refactor `PacketNumberSpace::rx_packet` to be an `Option<u64>` instead of `u64`.

* Smaller test case

* fix accepting packets from other remotes.

* Increase the iterations in `drive_bounded`

* Remove proptests itself

* Cargo.lock update fix after merge

* fix imports

* fix merge

* self-review

* cfg-gate proptests

* Implement `RoutingTable` instead of `multipath_addrs`

* Keep connection handles around, but don't use them when drained

* Fix all tests

* Reintroduce proptests

* Move random interaction running tests into submodule

* Implement more complex route table generation

* Prefer `Self::`

* refactor: Prefer not duplicating quinn-proto types

* Don't track `path_ids` in `State`, but fetch them from `Connection`

* Extract out `TestOp::run`

* Reorder things

* Add close operation

* Properly use short-circuiting

* Add holepunching APIs to proptests

* Revert accidental changes

* Return the `ConnectionError` from `Connection::handle_event`

* Revert "Return the `ConnectionError` from `Connection::handle_event`"

This reverts commit 713e17465f.

* Check `Connection::state` in proptests instead of adding a panic_on_transport_error config

* Properly check for transport errors

* `cargo fmt`

* Cfg out `random_interaction` module in Wasm

* format

* Cleanup, fix all clippy issues

* Code review
2025-12-09 12:45:37 +00:00
Rüdiger Klaehn bad9ca2abd refactor: Use array based data structure for sent_packets instead of BTreeMap (#202)
* WIP add new packet buffer

* Use git dep

* Use PacketBuf for lost_packets as well

* Use published sorted_index_buffer

* fmt

* Get rid of MSRV warning

* fix dependency sort order
2025-12-09 11:21:56 +00:00
Franz Heinzmann abbe27bf07 feat!: update qlog to latest drafts, add more events and QUIC extensions, emit traces per connection (#208)
* refactor: upgrade to latest n0-qlog

* feat: record path id

* feat: add qlog support for multipath frames

* support more frames and error codes

* feat: add support for quic-address-discovery and quic-ack-frequency extensions

* feat: support iroh's NAT traversal extension

* feat: emit TupleAssigned for new paths

* fixup

* chore: update to latest n0-qlog

* feat: emit TransportParameters

* chore: clippy

* deps: update to n0-qlog 0.1.0

* refactor: add qlog factory, move group_id to common_fields

* docs: improve

* chore: clippy

* fixup

* feat: add QlogFileFactory and util methods on TransportConfig

* feat: reexport from quinn

* chore: clippy

* feat: qlog timers

* add more timers

* docs: improve

* refactor: disable keep alive timers in qlog to reduce noise

* address review

* fix: downgrade logging

* cleanup

* fixup naming

---------

Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
2025-12-06 10:07:30 +00:00
Asmir Avdicevic 35f654b0c0 ci: fix more workflows 2025-12-02 13:24:18 +01:00
dignifiedquire c8a655c4b4 Merge remote-tracking branch 'upstream/main' into chore-merge-upstream 2025-12-01 14:08:32 +01:00
Friedel Ziegelmayer 7854c50e0e chore: fix wasm builds (#186) 2025-11-28 13:42:20 +01:00
dependabot[bot] ac22065c29 build(deps): bump bytes from 1.10.1 to 1.11.0
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.10.1...v1.11.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 13:31:37 +00:00
Cathal Mullan 35cefdd003 Bump MSRV to 1.80, remove once_cell and lazy_static deps 2025-11-14 18:29:03 +00:00
dependabot[bot] 7fc33f4143 build(deps): bump hex-literal from 1.0.0 to 1.1.0
Bumps [hex-literal](https://github.com/RustCrypto/utils) from 1.0.0 to 1.1.0.
- [Commits](https://github.com/RustCrypto/utils/compare/hex-literal-v1.0.0...hex-literal-v1.1.0)

---
updated-dependencies:
- dependency-name: hex-literal
  dependency-version: 1.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 09:17:23 +00:00
dependabot[bot] 425b8b45f6 build(deps): bump console-subscriber from 0.4.1 to 0.5.0
Bumps [console-subscriber](https://github.com/tokio-rs/console) from 0.4.1 to 0.5.0.
- [Release notes](https://github.com/tokio-rs/console/releases)
- [Changelog](https://github.com/tokio-rs/console/blob/main/release-plz.toml)
- [Commits](https://github.com/tokio-rs/console/compare/console-subscriber-v0.4.1...console-subscriber-v0.5.0)

---
updated-dependencies:
- dependency-name: console-subscriber
  dependency-version: 0.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 09:16:51 +00:00
Friedel Ziegelmayer 817a1b565d perf: implement more efficient timeouts and MSRV to 1.83 2025-11-04 22:38:50 +01:00
Dirkjan Ochtman 8141831760 Take semver-compatible updates 2025-10-30 05:36:24 +00:00
Diva Martínez 20e462d810 nat traversal requires multipath (#159)
* nat traversal requires multipath

* allow crate access, not ideal, but unavoidable

* satisfty MSRV limits

* pub all the way to the top

* update wasm-bindgen-test
2025-10-28 09:25:02 -05:00
dependabot[bot] 491b8b5deb build(deps): bump rustls-platform-verifier from 0.6.1 to 0.6.2
Bumps [rustls-platform-verifier](https://github.com/rustls/rustls-platform-verifier) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/rustls/rustls-platform-verifier/releases)
- [Changelog](https://github.com/rustls/rustls-platform-verifier/blob/main/CHANGELOG)
- [Commits](https://github.com/rustls/rustls-platform-verifier/compare/v/0.6.1...v/0.6.2)

---
updated-dependencies:
- dependency-name: rustls-platform-verifier
  dependency-version: 0.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 14:09:05 +00:00
dependabot[bot] 1e44c69f86 build(deps): bump getrandom from 0.3.3 to 0.3.4
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.3.3 to 0.3.4.
- [Release notes](https://github.com/rust-random/getrandom/releases)
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.3.3...v0.3.4)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-version: 0.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 13:53:59 +00:00
Floris Bruynooghe 2d68ea5303 Switch to released rustls (#152) 2025-10-17 11:00:04 -05:00
Floris Bruynooghe 3820a0ae48 upgrade rustls to 0.23.29 to match iroh (#134) 2025-10-06 12:38:49 +02:00
Diva M 56a5a35f38 fixes to make everything work together 2025-10-01 13:22:35 -05:00
Diva M 4d39665d48 Revert Dig's merge fixed to bring back const
This reverts commit 44a3dc6e45.
2025-10-01 13:22:24 -05:00
Dirkjan Ochtman 04c1aaf1e6 quinn: drop async-std support 2025-10-01 13:19:43 -05:00
Diva M f2e4efead3 Merge commit 'b2b930a0662b18b2e351264a21e175478bb3c3f1' into multipath-quinn-0.11.x-b2b930a-merges 2025-09-30 10:00:23 -05:00
Diva M 1b79bec886 Merge commit '3194714f6fa1c78108b2a6353bd3e2af95ce1152' into multipath-quinn-0.11.x-b2b930a-merges 2025-09-30 09:58:30 -05:00
Diva M f75aa3b442 Merge commit 'bb46d09f00c14ddedca9c88dc961225ac7dd4a4e' into multipath-quinn-0.11.x-b2b930a-merges
# Conflicts:
#	.github/workflows/book.yml
#	.github/workflows/rust.yml
2025-09-30 09:58:26 -05:00
dependabot[bot] e340daa36e build(deps): bump serde from 1.0.226 to 1.0.228
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.226 to 1.0.228.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.226...v1.0.228)

---
updated-dependencies:
- dependency-name: serde
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 05:10:12 +00:00
dependabot[bot] 3dfd4c560d build(deps): bump windows-sys from 0.61.0 to 0.61.1
Bumps [windows-sys](https://github.com/microsoft/windows-rs) from 0.61.0 to 0.61.1.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows-sys
  dependency-version: 0.61.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 05:05:22 +00:00
dependabot[bot] 2515f343c0 build(deps): bump rcgen from 0.14.4 to 0.14.5
Bumps [rcgen](https://github.com/rustls/rcgen) from 0.14.4 to 0.14.5.
- [Release notes](https://github.com/rustls/rcgen/releases)
- [Commits](https://github.com/rustls/rcgen/compare/v0.14.4...v0.14.5)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-version: 0.14.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 05:03:51 +00:00