Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ignore] yet another test for CI #23

Closed
wants to merge 77 commits into from
Closed

Conversation

matheus23
Copy link

No description provided.

mxinden and others added 30 commits October 24, 2024 10:47
Linux drops UDP datagrams larger than 64k, even when segmented. In other words,
64k - headers is the maximum GSO payload size.
This uses Apple's private sendmsg_x and recvmsg_x system calls for
multi-packet UDP I/O.
This makes it more apparent that this logging is happening because users
are more likely to read at least the first "layer" of the APIs they are
using.

In addition, we are going to offer a `try_send` API which requires us to
decouple the `send` free-function from this logging behaviour.
This allows us to have it follow the exact same implementation as the
unix and windows one.
`quinn-udp` depends on the `windows-sys` crate, more specifically
`windows_sys::Win32::Networking::WinSock`:

https://github.com/quinn-rs/quinn/blob/a5d9bd1154b7644ff22b75191a89db9687546fdb/quinn-udp/src/cmsg/windows.rs#L6

https://github.com/quinn-rs/quinn/blob/a5d9bd1154b7644ff22b75191a89db9687546fdb/quinn-udp/src/windows.rs#L13

Previously `quinn-udp` was using `windows-sys` `v0.52`.
quinn-rs#1960 updated `quinn-udp` to `v0.59`.
Note that `windows-sys` went straight from `v0.52` to `v0.59`. There are no
versions in between.

`quinn-udp` does not depend on any `windows-sys` `v0.59` features. In other
words, it can support both `windows-sys` `v0.52` and `v0.59`.

https://github.com/microsoft/windows-rs/releases/tag/0.59.0

This commit allows downstream users of `quinn-udp` to explicitly use `quinn-udp` with `windows-sys` `v0.52`.

For other users not explicitly demanding `windows-sys` `v0.52`, cargo will
choose `windows-sys` `v0.59`:

> It also attempts to use the greatest version currently available within that compatibility range.

https://doc.rust-lang.org/cargo/reference/resolver.html#semver-compatibility
Updates the requirements on [rustls-platform-verifier](https://github.com/rustls/rustls-platform-verifier) to permit the latest version.
- [Release notes](https://github.com/rustls/rustls-platform-verifier/releases)
- [Changelog](https://github.com/rustls/rustls-platform-verifier/blob/main/CHANGELOG)
- [Commits](rustls/rustls-platform-verifier@v/0.3.0...v/0.3.4)

---
updated-dependencies:
- dependency-name: rustls-platform-verifier
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
A header and tag could easily be larger than 40 bytes.
This gives the proto state the ability to be externally notified about
network path changes it might not be aware off.  In this case it will
re-set the RTT, Congestion Controller and MTU settings to the initial
states based on the TransportConfig.

This addresses the quinn-proto part of quinn-rs#2018.
Updates the requirements on [thiserror](https://github.com/dtolnay/thiserror) to permit the latest version.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](dtolnay/thiserror@1.0.21...1.0.69)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…cket2` and `std::net::UdpSocket` dependencies
larseggert and others added 23 commits November 18, 2024 23:31
It is common to set up automated error reporting based on `ERROR` and
potentially also `WARN` logs. Whilst GSO being unsupported is certainly
something worthwhile logging, the `ERROR` log level seems a bit
excessive and leads to unactionable errors reports.

The system can still operate with `max_gso_segments == 1`. As such, this
codepath "merely" indicates a state change in the system but not a fatal
error. As such, logging this on INFO level seems more appropriate.
Logging AND returning errors is considered an anti-pattern because it
leads to duplicate logs.
With quinn-rs#2017, the concrete `send`
implementations per platform are supposed to propagate `io::Error`s. Those
errors are then eiter logged and dropped in `UdpSocketState::send` or further
propagated in `UdpSocketState::try_send`.

The `fast_apple` `send` implementation added in
quinn-rs#1993 does not follow this pattern.

This commit adjusts the `fast_apple` implementation accordingly.
On Linux and Android, `quinn-udp` will retry a send on `ErrorKind::Interrupted`:

https://github.com/quinn-rs/quinn/blob/e318cc4a80436fd9fa19c02886d682c49efca185/quinn-udp/src/unix.rs#L305-L312

Do the same on all other unix platforms.
On Windows on ARM with Windows Subsystem for Linux (WSL) `WSA_RECVMSG` does not
return the segment size of coalesced UDP datagrams. See
quinn-rs#2041 for details.

While lacking a fix for the root cause, don't enable URO, i.e. don't coalesce
UDP datagrams on Windows on ARM.
@matheus23 matheus23 force-pushed the matheus23/quinn-wasm-test branch 4 times, most recently from 5033078 to d06b71b Compare December 16, 2024 15:59
@matheus23 matheus23 force-pushed the matheus23/quinn-wasm-test branch from d06b71b to dca23e5 Compare January 3, 2025 10:36
@matheus23 matheus23 closed this Jan 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.