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

Revert "Implement fallback for sendmmsg and recvmmsg" #1966

Merged
merged 2 commits into from
Sep 3, 2024

Conversation

mxinden
Copy link
Collaborator

@mxinden mxinden commented Aug 14, 2024

This reverts commit e6f1844.

e6f1844 called sendmmsg and recvmmsg through libc::syscall instead of libc::sendmmsg and libc::recvmmsg, thus preventing linking issues on old Android systems where libc::sendmmsg and libc::recvmmsg isn't available.

In #1503 (comment) the suggestion was made to no longer support these old Android systems (API level 16).

This commit reverts e6f1844. Given that sendmmsg support was previously dropped in ee08826, only the recvmmsg calls are reverted.


Alternative to #1964. Given the additional simplicity, my preference is for this change.

quinn-udp/src/unix.rs Outdated Show resolved Hide resolved
@mxinden
Copy link
Collaborator Author

mxinden commented Aug 21, 2024

@djc @Ralith do you have some time to give this pull request a review?

Copy link
Member

@djc djc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes sense to me, but I'll want to wait for @Ralith's opinion.

@mxinden
Copy link
Collaborator Author

mxinden commented Aug 27, 2024

Friendly ping @Ralith. Do you have some time to take a look?

Copy link
Collaborator

@Ralith Ralith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still need the ENOSYS path and the recvmmsg_fallback definition? Prior to e6f1844 we just called libc::recvmmgs directly rather than wrapping it at all -- can we return to that?

This reverts commit e6f1844.

e6f1844 called `sendmmsg` and `recvmmsg` through `libc::syscall` instead of
`libc::sendmmsg` and `libc::recvmmsg`, thus preventing linking issues on old
Android systems where `libc::sendmmsg` and `libc::recvmmsg` isn't available.

In quinn-rs#1503 (comment) the
decision was made to no longer support these old Android systems (API level 16).

This commit reverts e6f1844. Given that `sendmmsg` support was previously
dropped in ee08826, only the `recvmmsg` calls are reverted.
@mxinden
Copy link
Collaborator Author

mxinden commented Sep 2, 2024

Thank you for the review!

I am fine with no longer supporting both:

  1. Android API Level 16 (i.e. Android 4)
  2. Linux Kernel < 2.6.33

(1) allows us to drop indirection libc::syscall(libc::SYS_sendmmsg in favor of a direct call to libc::recvmmsg. (2) allows us to drop recvmsg (one m) fallback.

I updated this pull request accordingly.

@Ralith would you mind taking another look?

Copy link
Collaborator

@Ralith Ralith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I don't think Rust officially supports targeting linux 2.x anyway.

@djc djc added this pull request to the merge queue Sep 3, 2024
Merged via the queue into quinn-rs:main with commit 8bdbf42 Sep 3, 2024
13 checks passed
@djc
Copy link
Member

djc commented Sep 3, 2024

  • Published quinn-udp v0.5.5 at registry crates-io
  • [new tag] quinn-udp-0.5.5 -> quinn-udp-0.5.5
  • Release notes

@mxinden
Copy link
Collaborator Author

mxinden commented Sep 3, 2024

Thank you @djc for the prompt release. Very much appreciated 🙏

mxinden added a commit to mxinden/neqo that referenced this pull request Oct 30, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case mozilla#2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.
github-merge-queue bot pushed a commit to mozilla/neqo that referenced this pull request Oct 30, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case #2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.
github-merge-queue bot pushed a commit to mozilla/neqo that referenced this pull request Oct 31, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case #2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.
github-merge-queue bot pushed a commit to mozilla/neqo that referenced this pull request Oct 31, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case #2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.
github-merge-queue bot pushed a commit to mozilla/neqo that referenced this pull request Oct 31, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case #2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.

Co-authored-by: Lars Eggert <lars@eggert.org>
github-merge-queue bot pushed a commit to mozilla/neqo that referenced this pull request Oct 31, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case #2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.

Co-authored-by: Lars Eggert <lars@eggert.org>
moz-v2v-gh pushed a commit to mozilla/gecko-dev that referenced this pull request Oct 31, 2024
…ply-chain-reviewers,sunil

https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with
quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were
prohibited by seccomp on Android x86. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp
tracking issue: quinn-rs/quinn#1947 and upstream
quinn-udp fix: quinn-rs/quinn#1966

Now that the upstream fix is merged and released, this commit upgrads neqo_glue
to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used
on Android x86 Firefox Nightly. Thus this commit also removes the conditional
around the `network.http.http3.use_nspr_for_io` pref.

Differential Revision: https://phabricator.services.mozilla.com/D220890
gecko-dev-updater pushed a commit to marco-c/gecko-dev-wordified-and-comments-removed that referenced this pull request Nov 1, 2024
…ply-chain-reviewers,sunil

https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with
quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were
prohibited by seccomp on Android x86. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp
tracking issue: quinn-rs/quinn#1947 and upstream
quinn-udp fix: quinn-rs/quinn#1966

Now that the upstream fix is merged and released, this commit upgrads neqo_glue
to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used
on Android x86 Firefox Nightly. Thus this commit also removes the conditional
around the `network.http.http3.use_nspr_for_io` pref.

Differential Revision: https://phabricator.services.mozilla.com/D220890

UltraBlame original commit: 768c0cdc9453e75f3adca22194c725f78d314cf2
gecko-dev-updater pushed a commit to marco-c/gecko-dev-comments-removed that referenced this pull request Nov 1, 2024
…ply-chain-reviewers,sunil

https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with
quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were
prohibited by seccomp on Android x86. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp
tracking issue: quinn-rs/quinn#1947 and upstream
quinn-udp fix: quinn-rs/quinn#1966

Now that the upstream fix is merged and released, this commit upgrads neqo_glue
to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used
on Android x86 Firefox Nightly. Thus this commit also removes the conditional
around the `network.http.http3.use_nspr_for_io` pref.

Differential Revision: https://phabricator.services.mozilla.com/D220890

UltraBlame original commit: 768c0cdc9453e75f3adca22194c725f78d314cf2
gecko-dev-updater pushed a commit to marco-c/gecko-dev-wordified that referenced this pull request Nov 1, 2024
…ply-chain-reviewers,sunil

https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with
quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were
prohibited by seccomp on Android x86. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp
tracking issue: quinn-rs/quinn#1947 and upstream
quinn-udp fix: quinn-rs/quinn#1966

Now that the upstream fix is merged and released, this commit upgrads neqo_glue
to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used
on Android x86 Firefox Nightly. Thus this commit also removes the conditional
around the `network.http.http3.use_nspr_for_io` pref.

Differential Revision: https://phabricator.services.mozilla.com/D220890

UltraBlame original commit: 768c0cdc9453e75f3adca22194c725f78d314cf2
github-merge-queue bot pushed a commit to mozilla/neqo that referenced this pull request Nov 1, 2024
Currently we use `quinn-udp` `v0.5.4`.

`quinn-udp` `v0.5.5` fixes [`recvmmsg` calls on Android x86](quinn-rs/quinn#1966).

`quinn-udp` `v0.5.6` adds [experimental multi-message support on Apple
platforms](quinn-rs/quinn#1993) and [fixes an
unnecessary `windows-sys` version
restriction](quinn-rs/quinn#2021).

While not strictly necessary, given that our current version specification (i.e.
`version = "0.5.4"`) already allows users to use Neqo with `quinn-udp` `v0.5.6`,
this commit updates to `quinn-udp` `v0.5.6` anyways, thus making sure CI tests
with latest version.

In case #2208 lands, future compatible
version updates would touch the `Cargo.lock` file, not `Cargo.toml`.

Co-authored-by: Lars Eggert <lars@eggert.org>
i3roly pushed a commit to i3roly/firefox-dynasty that referenced this pull request Nov 1, 2024
…ply-chain-reviewers,sunil

https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with
quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were
prohibited by seccomp on Android x86. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp
tracking issue: quinn-rs/quinn#1947 and upstream
quinn-udp fix: quinn-rs/quinn#1966

Now that the upstream fix is merged and released, this commit upgrads neqo_glue
to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used
on Android x86 Firefox Nightly. Thus this commit also removes the conditional
around the `network.http.http3.use_nspr_for_io` pref.

Differential Revision: https://phabricator.services.mozilla.com/D220890
jamienicol pushed a commit to jamienicol/gecko that referenced this pull request Nov 5, 2024
…ply-chain-reviewers,sunil

https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with
quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were
prohibited by seccomp on Android x86. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp
tracking issue: quinn-rs/quinn#1947 and upstream
quinn-udp fix: quinn-rs/quinn#1966

Now that the upstream fix is merged and released, this commit upgrads neqo_glue
to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used
on Android x86 Firefox Nightly. Thus this commit also removes the conditional
around the `network.http.http3.use_nspr_for_io` pref.

Differential Revision: https://phabricator.services.mozilla.com/D220890
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants