diff --git a/Cargo.lock b/Cargo.lock index 3d1febf..254fe0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2624,7 +2624,7 @@ dependencies = [ [[package]] name = "mhrv-rs" -version = "1.9.21" +version = "1.9.22" dependencies = [ "base64 0.22.1", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 2aa9d44..ee3faf4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mhrv-rs" -version = "1.9.21" +version = "1.9.22" edition = "2021" description = "Rust port of MasterHttpRelayVPN -- DPI bypass via Google Apps Script relay with domain fronting" license = "MIT" diff --git a/docs/changelog/v1.9.22.md b/docs/changelog/v1.9.22.md new file mode 100644 index 0000000..89ab780 --- /dev/null +++ b/docs/changelog/v1.9.22.md @@ -0,0 +1,20 @@ + +• **Fix: skip H2 برای \`tunnel_request\` (single ops) — completes [#1040](https://github.com/therealaleph/MasterHttpRelayVPN-RUST/pull/1040)** ([PR #1041](https://github.com/therealaleph/MasterHttpRelayVPN-RUST/pull/1041) by @yyoyoian-pixel). v1.9.21's PR #1040 H2 رو از \`tunnel_batch_request_to\` skip کرد ولی \`tunnel_request\` (single-op path برای plain \`connect\` ops) جا موند. کاربرانی که session‌های full-tunnel با single-op path داشتند هنوز ۱۶-۱۷s long-poll stalls می‌گرفتن. این PR fix رو complete می‌کنه — same shape: حذف H2 try/fallback/NonRetryable block، مستقیم H1 pool \`acquire()\`. همه ۵ تا call site \`h2_relay_request\` audit شدن (جدول در PR description) — relay-mode paths H2 رو نگه می‌دارن (apps_script users بدون change)، همه full-tunnel paths حالا H1-only. ۲۰۹ lib test still pass. +--- +• **Fix: skip H2 for `tunnel_request` (single ops) — completes [#1040](https://github.com/therealaleph/MasterHttpRelayVPN-RUST/pull/1040)** ([PR #1041](https://github.com/therealaleph/MasterHttpRelayVPN-RUST/pull/1041) by @yyoyoian-pixel). + +v1.9.21's PR #1040 skipped H2 for `tunnel_batch_request_to` but missed `tunnel_request` — the single-op path used for plain `connect` ops. Users on full-tunnel sessions that went through the single-op path still saw 16-17s long-poll stalls. This PR completes the fix: same shape, remove the H2 try/fallback/NonRetryable block from `tunnel_request`, go straight to H1 pool `acquire()`. + +All 5 `h2_relay_request` call sites audited: + +| Call site | Function | Mode | H2 skipped? | +|---|---|---|---| +| `do_relay_once_with` | relay | Relay | No (correct — relay benefits from H2) | +| `relay()` exit-node | relay | Relay | No (correct) | +| `tunnel_request` | tunnel single op | Full tunnel | **Yes (this release)** | +| `tunnel_batch_request_to` | tunnel batch | Full tunnel | Yes (v1.9.21) | +| `tunnel_batch_request_with_timeout` | tunnel batch | Full tunnel | Yes (v1.9.21) | + +No other full-tunnel paths use H2 after this fix. Relay-mode H2 stays — r0ar's controlled A/B in #962 confirmed h2 is strictly better for apps_script-mode users, and that path is unchanged. + +209 lib tests still pass. `domain_fronter.rs`-only, -41 net lines.