Skip to content

fix: replace accounts.googl.com with accounts.google.com in SNI pool#92

Merged
therealaleph merged 1 commit intotherealaleph:mainfrom
vahidlazio:fix/sni-pool-googl-typo
Apr 23, 2026
Merged

fix: replace accounts.googl.com with accounts.google.com in SNI pool#92
therealaleph merged 1 commit intotherealaleph:mainfrom
vahidlazio:fix/sni-pool-googl-typo

Conversation

@vahidlazio
Copy link
Copy Markdown
Contributor

Summary

  • Replace accounts.googl.com with accounts.google.com in DEFAULT_GOOGLE_SNI_POOL

Problem

accounts.googl.com (googl.com, not google.com) is not in the SAN list of Google's GFE certificate. When the SNI round-robin lands on this name and verify_ssl is true, the TLS handshake fails:

certificate not valid for name "accounts.googl.com"

The cert includes *.google.com but NOT *.googl.com or accounts.googl.com. This causes intermittent relay failures — every Nth connection fails (where N = pool size) when the rotation hits this entry.

Fix

Replace with accounts.google.com which is covered by the *.google.com wildcard cert. Same DPI rotation benefit, no cert validation failures.

Test plan

  • cargo test — 67 tests pass
  • Verified accounts.google.com is in Google's GFE cert SAN list via *.google.com wildcard

🤖 Generated with Claude Code

accounts.googl.com (googl.com, not google.com) is NOT in the SAN list
of Google's GFE certificate. When the SNI round-robin lands on it and
verify_ssl is true, the TLS handshake fails with "certificate not valid
for name". Replace with accounts.google.com which is covered by the
*.google.com wildcard cert.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@therealaleph therealaleph merged commit a286b7b into therealaleph:main Apr 23, 2026
therealaleph added a commit that referenced this pull request Apr 23, 2026
 + #93)

- Android DEFAULT_SNI_POOL: mirror the Rust-side fix from #92 —
  accounts.googl.com replaced by accounts.google.com. Same cert-SAN
  mismatch that was failing every Nth rotation in the Rust client
  affected the Android user's sniHosts population; both pools need
  to stay in sync by design.

- Release rolls up PR #92 (cert fix) and PR #93 (tunnel-node +
  CodeFull.gs scaffolding). PR #93 adds a standalone binary under
  tunnel-node/ plus an Apps Script companion; no main-crate changes,
  so this is a zero-risk merge. Users who want to deploy a tunnel
  node can start today. The dispatch that activates `mode: full` is
  still in review in PR #94.
vahidlazio added a commit to vahidlazio/MasterHttpRelayVPN-RUST that referenced this pull request Apr 23, 2026
…dynamic pipeline

Reviewer feedback from therealaleph#94:

1. Rebase onto main (conflict with therealaleph#92 accounts.google.com fix resolved).

2. Mode isolation verified: Mode::Full is a clean early-return branch in
   dispatch_tunnel — apps_script and google_only paths are untouched.

3. Batch multiplexer concurrency: a slow/dead target on the tunnel-node
   can no longer block all sessions in the same batch:
   - BATCH_TIMEOUT (30s) on the batch HTTP round-trip itself
   - REPLY_TIMEOUT (35s) per session waiting for its reply
   - On timeout, sessions get an error and retry next tick

4. Resource exhaustion guards:
   - MAX_BATCH_OPS (50) caps ops per batch
   - MAX_BATCH_PAYLOAD_BYTES (4 MB) caps base64 payload per batch
   - When either limit is exceeded, the mux fires the current batch
     and starts a new one (split, not drop)

5. Dynamic pipeline depth: scales with num_scripts (1 per deployment,
   clamped 2..12). More deployments = more concurrent batches = lower
   per-session latency. POOL_MAX bumped 50 → 80 to match.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
vahidlazio added a commit to vahidlazio/MasterHttpRelayVPN-RUST that referenced this pull request Apr 24, 2026
…dynamic pipeline

Reviewer feedback from therealaleph#94:

1. Rebase onto main (conflict with therealaleph#92 accounts.google.com fix resolved).

2. Mode isolation verified: Mode::Full is a clean early-return branch in
   dispatch_tunnel — apps_script and google_only paths are untouched.

3. Batch multiplexer concurrency: a slow/dead target on the tunnel-node
   can no longer block all sessions in the same batch:
   - BATCH_TIMEOUT (30s) on the batch HTTP round-trip itself
   - REPLY_TIMEOUT (35s) per session waiting for its reply
   - On timeout, sessions get an error and retry next tick

4. Resource exhaustion guards:
   - MAX_BATCH_OPS (50) caps ops per batch
   - MAX_BATCH_PAYLOAD_BYTES (4 MB) caps base64 payload per batch
   - When either limit is exceeded, the mux fires the current batch
     and starts a new one (split, not drop)

5. Dynamic pipeline depth: scales with num_scripts (1 per deployment,
   clamped 2..12). More deployments = more concurrent batches = lower
   per-session latency. POOL_MAX bumped 50 → 80 to match.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
therealaleph pushed a commit that referenced this pull request Apr 25, 2026
…92)

The googl.com shortener domain is NOT in Google's GFE certificate SAN list — verified via `openssl s_client -verify_hostname accounts.googl.com` returning hostname mismatch. Every Nth connection where the rotation landed on this entry was failing cert validation with `verify_ssl=true`. Replaced with accounts.google.com which is covered by *.google.com wildcard.
therealaleph added a commit that referenced this pull request Apr 25, 2026
 + #93)

- Android DEFAULT_SNI_POOL: mirror the Rust-side fix from #92 —
  accounts.googl.com replaced by accounts.google.com. Same cert-SAN
  mismatch that was failing every Nth rotation in the Rust client
  affected the Android user's sniHosts population; both pools need
  to stay in sync by design.

- Release rolls up PR #92 (cert fix) and PR #93 (tunnel-node +
  CodeFull.gs scaffolding). PR #93 adds a standalone binary under
  tunnel-node/ plus an Apps Script companion; no main-crate changes,
  so this is a zero-risk merge. Users who want to deploy a tunnel
  node can start today. The dispatch that activates `mode: full` is
  still in review in PR #94.
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.

2 participants