feat: block QUIC by default — faster initial page/video loads in full tunnel mode#805
Merged
therealaleph merged 1 commit intotherealaleph:mainfrom May 6, 2026
Conversation
QUIC over the TCP-based tunnel causes TCP-over-TCP meltdown — users see <1 Mbps where HTTPS/TCP would do >50. The existing `block_quic` config option was off by default and had no UI on either platform, so most users suffered QUIC degradation without knowing why. Changes: - Default `block_quic` to `true` (was `false`). Browsers detect the silent UDP/443 drop and fall back to TCP/HTTPS within seconds. - Add "Block QUIC" toggle in Android Advanced UI. - Add "Block QUIC (UDP/443)" checkbox in desktop UI (was config-only, issue therealaleph#213). - Android: always emit `block_quic` in JSON so the Rust default doesn't silently override the user's choice. Closes therealaleph#793. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Great , tnx for adding this option i really appreciate it 🙏❤️ |
w0l4i
approved these changes
May 6, 2026
Owner
|
@yyoyoian-pixel — sound default flip. Block QUIC by default avoids the TCP-over-TCP meltdown that Full mode was inheriting from QUIC datagrams over the TCP-based tunnel, and Chrome / Firefox both fall back to TCP/HTTPS within seconds when UDP/443 is dropped, so the user-visible cost is the brief retry while the user-visible win is reliable Full mode page loads. Always-emit- Merging — will ship in v1.9.15. [reply via Anthropic Claude | reviewed by @therealaleph] |
therealaleph
added a commit
that referenced
this pull request
May 6, 2026
…Actions full tunnel docs Wraps four already-merged PRs into a release: - PR #799 (@dazzling-no-more): HTTP/2 multiplexing on the relay leg with idempotency-safe h1 fallback. ALPN-negotiates h2; one TCP/TLS connection multiplexes ~100 streams instead of the pool. Slow Apps Script calls no longer head-of-line-block the queue on the same socket. force_http1 kill switch in config. 180→197 tests (+17). - PR #805 (@yyoyoian-pixel): block_quic default true. QUIC over the TCP-based tunnel was TCP-over-TCP meltdown; browsers fall back to TCP/HTTPS within seconds when UDP/443 is dropped. Adds Android + desktop UI toggles. - PR #819 (@brightening-eyes): enabled accesskit on eframe so screen readers (NVDA/JAWS/VoiceOver/Orca) can navigate the desktop UI. Closes #750. - PR #783 (@euvel): GitHub Actions Full tunnel docs + workflow YAML files for users who can't buy a VPS. cloudflared Quick / ngrok / cloudflared Named. Strategically: h2 multiplexing is the architectural fix for #781 / #773 perceived-slowness regression — it makes the pool tuning machinery much less load-bearing. force_http1 kill switch is there if anything goes sideways in the wild. Tests: 197 lib + 35 tunnel-node green. UI release-mode build green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
block_quictotrue(wasfalse). QUIC over the TCP-based tunnel causes TCP-over-TCP meltdown (<1 Mbps). Browsers detect the silent UDP/443 drop and fall back to TCP/HTTPS within seconds — significantly improving initial page and YouTube video load times in full tunnel mode.block_quicto JSON so the Rust default can't silently override the user's choice.Why this matters for full tunnel mode
Without
block_quic, browsers attempt QUIC (HTTP/3) first on every new connection. In full tunnel mode, QUIC datagrams travel over the TCP-based tunnel — TCP-over-TCP meltdown caps throughput at <1 Mbps. The browser eventually falls back to TCP/HTTPS, but only after wasting 5-10s on failed QUIC attempts. This is most visible as:With
block_quic: true, the UDP/443 packets are silently dropped, the browser detects this in ~1-2s and goes straight to TCP/HTTPS — no meltdown, no wasted time.Closes #793.
Test plan
cargo checkcleanblock_quicin JSON configtrueviadefault_block_quic()🤖 Generated with Claude Code