Skip to content

fix(core): disable QUIC segmentation offload on Android - #389

Merged
momics merged 2 commits into
mainfrom
codex/android-gso-fallback
Jul 20, 2026
Merged

fix(core): disable QUIC segmentation offload on Android#389
momics merged 2 commits into
mainfrom
codex/android-gso-fallback

Conversation

@momics

@momics momics commented Jul 20, 2026

Copy link
Copy Markdown
Owner

This was generated by AI during implementation.

Why

Android can advertise UDP segmentation offload and then reject a batched sendmsg with an I/O error. The currently released noq disables GSO after that rejection but does not retransmit the rejected application packets, which can stall request bodies.

What changed

This is intentionally a narrow compatibility policy, not a custom UDP implementation. Issue #388 tracks its removal after the fixed noq release is adopted and revalidated.

Verification

  • cargo test -p iroh-http-core --lib: 97 passed
  • focused transport-policy tests: 2 passed
  • strict library clippy: passed
  • Android debug APK with embedded frontend: built and installed
  • three consecutive physical-device Android-to-desktop suites: 107 pass / 0 fail / 0 skip each
  • body latency ranges: 4 KiB 29.9-32.2 ms; 64 KiB 39.8-82.5 ms; 1 MiB 227.3-251.1 ms; 5 MiB 796-919.3 ms
  • no QUIC application-data send errors occurred

One independent 60-byte QADv4 connectivity probe still observed Android's kernel rejection and immediately disabled its own GSO path. That probe is outside the QUIC transport configuration, did not affect application data, and remains upstream-owned.

Closes #387.
Follow-up: #388.
Upstream: n0-computer/noq#746.

@momics momics added bug Something isn't working connectivity Peer discovery and connection P1 High priority rust Pull requests that update rust code testing labels Jul 20, 2026
@momics
momics merged commit cf5d16d into main Jul 20, 2026
8 checks passed
@momics
momics deleted the codex/android-gso-fallback branch July 20, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working connectivity Peer discovery and connection P1 High priority rust Pull requests that update rust code testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Android uploads can stall after UDP segmentation-offload send failures

1 participant