Repository navigation
Deno deploy and Encoding error 'GET net::ERR_CONTENT_DECODING_FAILED 200 (OK)' #1239
Description
Activity
Can you test this release on this fork? I solved the issue there.
https://github.com/dazzling-no-more/rahgozar/releases/tag/v2.0.2Can you test this release on this fork? I solved the issue there. https://github.com/dazzling-no-more/rahgozar/releases/tag/v2.0.2
Still the same. it's been like 40 mins I'm trying this. re-deployed on deno with a new Playground name and URL. updated exit-node.ts on the system and also config.json in %appdata% folder.
In deno browsing the generated URl gives: "The script completed but did not return anything." is this correct? what should I do?
Sample output on the browser:
{"s":200,"h":{"cache-control":"no-cache, private, must-revalidate, pre-check=0, post-check=0","cf-cache-status":"DYNAMIC","cf-ray":"9fd5feda18b20b6a-AMS","content-security-policy":"connect-src 'self' blob: https://fonts.googleapis.com/css https://mapsresources-pa.googleapis.com https://maps.googleapis.com https://translate.googleapis.com https://www.gstatic.com/maps/ https://*.pscp.tv https://*.twimg.com https://*.video.pscp.tv https://*.watch.x.com https://aa.twitter.com https://aa.x.com https://accounts.google.com/gsi/ https://ads-api.twitter.com https://ads-api.x.com https://api-stream.twitter.com https://api-stream.x.com https://api.twitter.com https://api.x.ai https://api.x.com https://api.x.com https://caps.twitter.com https://caps.x.com https://grok.x.com https://jf.twitter.com https://jf.x.com https://jf-t.x.com https://pay.twitter.com https://pay.x.com https://sentry.io https://ton-staging.atla.twitter.com https://ton-staging.atla.x.com https://ton-staging.pdxa.twitter.com https://ton-staging.pdxa.x.com https://ton.twitter.com https://ton.local.twitter.com https://ton.x.com https://twitter.com https://upload.twitter.com https://upload.x.com https://www.google-analytics.com https://x.com https://grok-api.gcp.mouseion.dev https://assets.mouseion.dev https://grok.com https://assets.grok.com https://imagine-public.x.ai/ wss://grok.com wss://grok-api.gcp.mouseion.dev https://*.adtrafficquality.google https://*.googlesyndication.com https://*.doubleclick.net https://adservice.google.com https://www.googleadservices.com https://pagead2.googlesyndication.com https://www.google.com https://google.com https://via.intercom.io https://api.intercom.io https://api.au.intercom.io https://api.eu.intercom.io https://api-iam.intercom.io https://api-iam.eu.intercom.io https://api-iam.au.intercom.io https://api-ping.intercom.io https://nexus-websocket-a.intercom.io wss://nexus-websocket-a.intercom.io https://nexus-websocket-b.intercom.io wss://nexus-websocket-b.intercom.io https://nexus-europe-websocket.intercom.io wss://nexus-europe-websocket.intercom.io https://nexus-australia-websocket.intercom.io wss://nexus-australia-websocket.intercom.io https://uploads.intercomcdn.com https://uploads.intercomcdn.eu https://uploads.au.intercomcdn.com https://uploads.eu.intercomcdn.com https://uploads.intercomusercontent.com https://livekit.grok.com wss://livekit.grok.com https://production.plaid.com/ https://sandbox.plaid.com/ https://ingestion.dv.socure.io https://network.dv.socure.io/ https://analytics.dv.socure.io/ https://payments-dev.x.com/customer/wasm/forward-with-v1.wasm https://payments-staging.x.com/customer/wasm/forward-with-v1.wasm https://payments-prod.x.com/customer/wasm/forward-with-v1.wasm https://money-dev.x.com/customer/wasm/forward-with-v1.wasm https://money-staging.x.com/customer/wasm/forward-with-v1.wasm https://money.x.com/customer/wasm/forward-with-v1.wasm https://api.stripe.com https://m.castle.io https://edge.prelude.dev https://checkoutshopper-live.adyen.com wss://*.pscp.tv https://vmap.grabyo.com https://dwo3ckksxlb0v.cloudfront.net https://media.riffsy.com https://*.giphy.com https://media.tenor.com https://c.tenor.com wss://chat-ws.x.com https://d1muhwhmpsz4u8.cloudfront.net/ https://d2bchqfeno8n2m.cloudfront.net/ https://d2shtph9y6bxk.cloudfront.net/ https://xchat-hsm-staging.x.com/ https://realm-a.x.com https://realm-b.x.com https://realm-west1.x.com https://realm-east1.x.com https://hsm-staging.x.com https://ads-twitter.com https://analytics.twitter.com https://analytics.x.com ; default-src 'self'; form-action 'self' https://twitter.com https://*.twitter.com https://x.com https://*.x.com https://localhost.twitter.com:3443 https://localhost.x.com:3443 https://accounts.x.ai https://grok.com https://intercom.help https://api-iam.intercom.io https://api-iam.eu.intercom.io https://api-iam.au.intercom.io; font-src 'self' https://*.twimg.com https://js.intercomcdn.com https://fonts.intercomcdn.com; frame-src 'self' https://accounts.google.com/ https://accounts.google.com/gsi/ https://cards-frame.twitter.com https://cdn.plaid.com/ https://client-api.arkoselabs.com/ https://content.googleapis.com/ https://iframe.arkoselabs.com/ https://mobile.twitter.com https://mobile.x.com https://pay.twitter.com https://pay.x.com https://google.com https://www.google.com https://intercom-sheets.com https://www.intercom-reporting.com https://www.youtube.com https://player.vimeo.com https://fast.wistia.net https://console.googletagservices.com https://*.doubleclick.net https://*.adtrafficquality.google https://*.safeframe.googlesyndication.com https://www.googleadservices.com https://googleadservices.com https://adservice.google.com https://*.googlesyndication.com https://td.doubleclick.net https://payments-dev.x.com/ https://payments-staging.x.com/ https://payments-prod.x.com/ https://sdn.payments-dev.x.com/ https://sdn.payments-staging.x.com/ https://sdn.payments-prod.x.com/ https://money-dev.x.com/ https://money-staging.x.com/ https://money.x.com/ https://sdn.money-dev.x.com/ https://sdn.money-staging.x.com/ https://sdn.money.x.com/ https://p2pcreditcardiframesandbox.crbcos.com https://p2pcreditcardiframe.crbcos.com https://verify-sandbox.plaid.com/ https://*.js.stripe.com https://js.stripe.com https://hooks.stripe.com https://cdn.getpinwheel.com/ https://artifacts.grokusercontent.com https://twitter.com https://x.com https://studio.x.com https://studio-dev.x.com https://recaptcha.net/recaptcha/; img-src 'self' blob: data: https://www.google.com/maps/place/ https://imgs.search.brave.com https://*.cdn.twitter.com https://*.cdn.x.com https://ton.twitter.com https://ton.x.com https://*.twimg.com https://analytics.twitter.com https://analytics.x.com https://cm.g.doubleclick.net https://www.google-analytics.com https://maps.googleapis.com https://www.periscope.tv https://www.pscp.tv https://ads-twitter.com https://ads-api.twitter.com https://ads-api.x.com https://api.x.com https://developer.x.com blob: data: https://js.intercomcdn.com https://static.intercomassets.com https://downloads.intercomcdn.com https://downloads.intercomcdn.eu https://downloads.au.intercomcdn.com https://uploads.intercomusercontent.com https://gifs.intercomcdn.com https://video-messages.intercomcdn.com https://messenger-apps.intercom.io https://messenger-apps.eu.intercom.io https://messenger-apps.au.intercom.io https://*.intercom-attachments-1.com https://*.intercom-attachments.eu https://*.au.intercom-attachments.com https://*.intercom-attachments-2.com https://*.intercom-attachments-3.com https://*.intercom-attachments-4.com https://*.intercom-attachments-5.com https://*.intercom-attachments-6.com https://*.intercom-attachments-7.com https://*.intercom-attachments-8.com https://*.intercom-attachments-9.com https://static.intercomassets.eu https://static.au.intercomassets.com https://media.riffsy.com https://*.giphy.com https://media.tenor.com https://c.tenor.com https://*.pscp.tv https://*.periscope.tv https://prod-periscope-profile.s3-us-west-2.amazonaws.com https://platform-lookaside.fbsbx.com https://scontent.xx.fbcdn.net https://scontent-sea1-1.xx.fbcdn.net https://*.googleusercontent.com https://t.co/1/i/adsct https://*.googleusercontent.com https://*.gstatic.com https://*.googlesyndication.com https://*.adtrafficquality.google https://www.google.com/ads/measurement/ https://*.google.com/ads/measurement/ https://googleads.g.doubleclick.net https://google.com https://www.google.com https://plaid-merchant-logos.plaid.com https://plaid-counterparty-logos.plaid.com https://client-logos.plaid.com https://assets.mouseion.dev https://assets.grok.com; manifest-src 'self'; media-src 'self' data: blob: https://twitter.com https://x.com https://*.twimg.com https://*.vine.co https://*.pscp.tv https://*.video.pscp.tv https://*.watch.x.com https://js.intercomcdn.com https://downloads.intercomcdn.com https://downloads.intercomcdn.eu https://downloads.au.intercomcdn.com https://dwo3ckksxlb0v.cloudfront.net; object-src 'none'; script-src 'self' 'unsafe-inline' https://*.twimg.com https://recaptcha.net/recaptcha/ http://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js https://accounts.google.com/gsi/client https://apis.google.com/js/api.js https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js https://client-api.arkoselabs.com/ https://static.ads-twitter.com https://twitter.com https://www.google-analytics.com https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js https://x.com https://sdn.payments-dev.x.com/assets/loader.min.js https://sdn.payments-staging.x.com/assets/loader.min.js https://sdn.payments-prod.x.com/assets/loader.min.js https://sdn.money-dev.x.com/assets/loader.min.js https://sdn.money-staging.x.com/assets/loader.min.js https://sdn.money.x.com/assets/loader.min.js https://sdk.dv.socure.io/latest/device-risk-sdk.js https://cdn.plaid.com/link/v2/stable/link-initialize.js https://payments-dev.x.com/customer/wasm/xxp-forward-with-sdk.js https://payments-staging.x.com/customer/wasm/xxp-forward-with-sdk.js https://payments-prod.x.com/customer/wasm/xxp-forward-with-sdk.js https://money-dev.x.com/customer/wasm/xxp-forward-with-sdk.js https://money-staging.x.com/customer/wasm/xxp-forward-with-sdk.js https://money.x.com/customer/wasm/xxp-forward-with-sdk.js https://js.stripe.com https://*.js.stripe.com https://cdn.getpinwheel.com/pinwheel-v3.2.1.js https://securepubads.g.doubleclick.net https://www.googletagservices.com https://*.googletagservices.com https://pagead2.googlesyndication.com https://adservice.google.com https://www.googleadservices.com https://ads.google.com https://tpc.googlesyndication.com https://*.tpc.googlesyndication.com https://googleads.g.doubleclick.net https://app.intercom.io https://widget.intercom.io https://js.intercomcdn.com 'wasm-unsafe-eval' 'nonce-K4D6L6pgdj88fdhLTkwNjMtMDAxMDFlNmRhZTFk'; style-src 'self' 'unsafe-inline' https://accounts.google.com/gsi/style https://*.twimg.com; child-src 'self' blob:; worker-src 'self' blob:; report-uri https://x.com/i/csp_report?a=O5RXE%3D%3D%3D&ro=false","content-type":"text/html; charset=utf-8","cross-origin-embedder-policy":"unsafe-none","cross-origin-opener-policy":"unsafe-none","date":"Sun, 17 May 2026 22:18:00 GMT","expiry":"Tue, 31 Mar 1981 05:00:00 GMT","last-modified":"Sun, 17 May 2026 22:18:00 GMT","origin-cf-ray":"9fd5feda18b20b6a-AMS","perf":"7402827104","pragma":"no-cache","reporting-endpoints":"coep-report=\"https://x.com/i/coep-report\", coop-report=\"https://x.com/i/coop-report\"","server":"cloudflare envoy","set-cookie":"__cf_bm=pyabuL3VlXXE2sH7Y46t35434DxI48I.fuZ0-1779056280.258214-1.0.1.1-9cOVZ_i.hzE0rjWx0jD.NR5LyF6ZCg3VxQIHtlIq5xeRTMmsw.o8lHnZQmgqe.V4CsGFFReQhTrx_w2.vRV9X8eNa6Fr4kl35OF6vVIHLAcvXD0PcTwQe_9x6E8s4f1XB; HttpOnly; SameSite=None; Secure; Path=/; Domain=x.com; Expires=Sun, 17 May 2026 22:48:00 GMT","strict-transport-security":"max-age=631138519; includeSubdomains","vary":"accept-encoding","x-content-type-options":"nosniff","x-frame-options":"DENY","x-powered-by":"Express","x-response-time":"15","x-served-by":"t4_a","x-transaction-id":"ac07974bc5a4e57e","x-xss-protection":"0"},"b":"PCFET0NUWVBFIGh0bWw+PGh0bWwgZGlyPSJsdHIiIGxhbmc9ImVuIj48aGVhZD48bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx2aWV3cG9ydC1maXQ9Y292ZXIiIC8+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSIvL2Ficy50d2ltZy5jb20iIC8+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSIvL2FwaS54LmNvbSIgLz48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGJzLnR3aW1nLmNvbSIgLz48bGluayByZWw9InByZWxvYWQiIGFzPSJmb250IiB0eXBlPSJmb250L3dvZmYyIiBjcm9zc29yaWdpbiBmZXRjaHByaW9yaXR5PSJoaWdoIiBocmVmPSJodHRwczovL2Ficy50d2ltZy5jb20vcmVzcG9uc2l2ZS13ZWIvY2xpZW50LXdlYi9DaGlycC1SZWd1bGFyLjgwZmRhMjdhLndvZmYyIiAvPjxsaW5rIHJlbD0icHJlbG9hZCIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvd29mZjIiIGNyb3Nzb3JpZ2luIGZldGNocHJpb3JpdHk9ImhpZ2giIGhyZWY9Imh0dHBzOi8vYWJzLnR3aW1nLmNvbS9yZXNwb2@therealaleph
regarding to #1249 , for other websites like chatgpt.com and grok.com this time it gives s:200. but again returns json.@Netman82 the redeploy fixed the
ERR_CONTENT_DECODING_FAILED. The raw JSON you're seeing now is a separate bug: your Apps ScriptCode.gsis older than v2.0.2 and double-wraps the exit-node's response, which rahgozar then hands to the browser as page content.(The
"The script completed but did not return anything."page when visiting the URL directly is intentional — it's a decoy forGETrequests so scanners can't fingerprint it. Not a problem.)Fix — redeploy Apps Script:
- Open your Apps Script project at https://script.google.com
- Replace the entire script file with the current
assets/apps_script/Code.gs - Deploy → Manage deployments → ✏️ Edit → Version: New version → Deploy
- URL stays the same, no config change needed. Reload x.com / chatgpt.com / grok.com through rahgozar.
The next client release will detect this misconfig and surface a clear log error instead of rendering raw JSON.
@dazzling-no-more it worked - halfway - for x.com chatgpt! thanks (v2.0.2 rahgozar)!
hosts in config:
"hosts": [ "chatgpt.com", "claude.ai", "x.com", "grok.com", "zonegfx.com", "aistudio.google.com" ]-
aistudio.google.com gives:
403 That’s an error.
Your client does not have permission to get URL / from this server. That’s all we know. -
Can I add my websites behind CF of my choice to the config file?
I added zonegfx.com but CF protection still come up (loops). -
Logging in to grok (https://accounts.x.ai/check-login?redirect=grok-com):
Sorry, you have been blocked
You are unable to access x.ai -
claude.ai in https://claude.ai/login still behind CF protection (loops)
All tested via Firefox (never opened any of these before in FF).
-
Thanks, that result is useful: it means the old raw-JSON wrapping problem is fixed for your setup, and now we are down to normal destination-side behavior.
For the four remaining cases:
aistudio.google.comreturning Google's403is expected in this architecture. Google blocks some Google-owned services from being fetched through Apps Script / Google server-side paths. This is not the same as a broken exit node.- You can add your own Cloudflare-backed domains to
exit_node.hosts, but it is not a guaranteed Cloudflare bypass. It only changes the exit IP to your Deno/VPS/worker-side IP. If Cloudflare still classifies that IP/browser fingerprint as risky, the challenge can still loop. accounts.x.aiblocking login is also destination-side anti-bot/risk scoring. The exit node can make the request come from outside Iran, but it cannot guarantee that x.ai will accept that IP/session.claude.ailooping on Cloudflare means the same thing: the route is working, but the selected exit IP/fingerprint is not trusted enough by Cloudflare.
So the practical rule is:
- raw JSON or
ERR_CONTENT_DECODING_FAILED= client / Apps Script version problem; fixed by v1.9.29 Code.gs redeploy. cf-mitigated: challenge, Cloudflare loop, or destination403= the destination rejected the exit IP/session. Try a different exit node/VPS/provider/browser profile, but this is not fully solvable from Code.gs alone.
Keeping this issue open as the canonical exit-node behavior thread for now.
Answered via LLM, Supervised @therealaleph
Reacted by Mehdi@dazzling-no-more it worked - halfway - for x.com chatgpt! thanks (v2.0.2 rahgozar)!
hosts in config:
"hosts": [ "chatgpt.com", "claude.ai", "x.com", "grok.com", "zonegfx.com", "aistudio.google.com" ]- aistudio.google.com gives:
403 That’s an error.
Your client does not have permission to get URL / from this server. That’s all we know. - Can I add my websites behind CF of my choice to the config file?
I added zonegfx.com but CF protection still come up (loops). - Logging in to grok (https://accounts.x.ai/check-login?redirect=grok-com):
Sorry, you have been blocked
You are unable to access x.ai - claude.ai in https://claude.ai/login still behind CF protection (loops)
All tested via Firefox (never opened any of these before in FF).
Good progress! Quick answers:
Yes, add any host to
hosts— that's exactly what the list is for. There's no fixed allowlist; whatever you put there routes through your exit-node.accounts.x.ai— grok login redirects toaccounts.x.ai, which is a different domain. Addx.aito your hosts list.claude.ai/zonegfx.comstill CF-blocked even after adding — root cause: Deno Deploy runs on Google Cloud, and CF flags some Google datacenter IPs. Worked for x.com / chatgpt.com because CF doesn't flag your specific Deno region for those, but does for claude.ai / zonegfx. Fix: switch your exit-node host to one with a non-GCP outbound IP — a $3-5/mo VPS works best. Deployassets/exit_node/wrapper.tsthere instead of Deno Deploy, then pointrelay_urlin your config at the VPS. Same PSK works; no other change needed.aistudio.google.com403 — that's a Google sanctions block, not a rahgozar routing issue. Google refuses Iranian users at the account/policy layer (the "Your client does not have permission" page is Google's own geo-block), and no combination of Apps Script + exit-node routing will get past it on its own. You'd need a non-Iran Google account paired with a non-Iran exit-node IP — outside what rahgozar's config alone can solve. I'd just remove it fromhosts.Reacted by Mehdi- aistudio.google.com gives:
Hi,
I'm also using the exit-node with Deno. and also replaced the google script with the one in the assets/apps_script/Code.gs and made a new deploy, and replaced the deployment ids with the new ones in the gui and saved the config and all that, but still getting {"s":200,"h":{...},"b":""} json when opening the hosts that are going through the exit node.
am I missing a step?Hi, I'm also using the exit-node with Deno. and also replaced the google script with the one in the assets/apps_script/Code.gs and made a new deploy, and replaced the deployment ids with the new ones in the gui and saved the config and all that, but still getting {"s":200,"h":{...},"b":""} json when opening the hosts that are going through the exit node. am I missing a step?
Did you use rahgozar app? (the fork of this repository with some new features and bug fixes)
https://github.com/dazzling-no-more/rahgozar/releases/tag/v2.0.3Reacted by Valo-iOReacted by Valo-iOFor the
{ "s": 200, "h": {...}, "b": "" }case: that still means the browser is receiving the exit-node envelope as page content instead of mhrv-rs unwrapping it into a normal HTTP response.Please check these two things:
- If you are testing the rahgozar fork, use the matching app + matching
Code.gsfrom that fork. Mixing upstream mhrv-rs app with fork-only exit-node changes can produce confusing results. - If you are testing upstream mhrv-rs, use v1.9.29+ or newer and redeploy the current upstream
assets/apps_script/Code.gsas New version in Apps Script. Saving the file is not enough.
If it still happens after that, please post:
app/repo used: mhrv-rs or rahgozar version: exit_node provider: Deno/VPS/Worker one affected host: first 30 log lines around that host:Keeping this thread as the canonical exit-node/raw-envelope thread.
Answered via LLM, Supervised @therealaleph
- If you are testing the rahgozar fork, use the matching app + matching
Hi @dazzling-no-more good job with the fork the main issue is it's very unstable it assumes ideal network connections and low timeouts! That's why it's much slower even in normal mode (without exit node) compared to the original upstream. It works but often all you get is timeouts, you have over-optimized your version not taking the unstable conditions into account. Otherwise a pretty good fork!
Some examples (Only pasted the warnings)
2026-05-20T10:46:58.089801Z INFO h2 connection established to relay edge 2026-05-20T10:47:04.125669Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:04.125690Z WARN exit node failed for https://b.slack-edge.com/bv1-13/gantry-v2-async-gantry-v2-vendors-async.090063dc8b008fc36307.min.js?cacheKey=gantry-1779268052 and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:10.260109Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:10.260131Z WARN exit node failed for https://gemini.google.com/ and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:10.260150Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:10.260171Z WARN exit node failed for https://google-ohttp-relay-safebrowsing.fastly-edge.com/ and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:10.260109Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:10.260131Z WARN exit node failed for https://gemini.google.com/ and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:10.260150Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:10.260171Z WARN exit node failed for https://google-ohttp-relay-safebrowsing.fastly-edge.com/ and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:18.092023Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:18.092040Z WARN exit node failed for https://b.slack-edge.com/bv1-13/gantry-v2-async-gantry-v2-shared-boot-async.1de384b35147fc0f8a27.min.js?cacheKey=gantry-1779268052 and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:24.137336Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:24.137382Z WARN exit node failed for https://b.slack-edge.com/bv1-13/gantry-v2-async-gantry-v2-vendors-async.090063dc8b008fc36307.min.js?cacheKey=gantry-1779268052 and request was already sent (timeout); not falling back to direct Apps Script 2026-05-20T10:47:28.726124Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-20T10:47:28.726182Z WARN exit node failed for https://github.com/therealaleph/MasterHttpRelayVPN-RUST/issues/1285 and request was already sent (timeout); not falling back to direct Apps ScriptReacted by dazzling-no-moreHi @Stevemoretz, thanks — useful report, those warnings point at a real over-conservative path.
What's happening: exit-node mode wraps your request in an outer POST to Apps Script (carrying the inner relay JSON). When that outer POST hits a post-send timeout, the code refuses to retry because the exit node may already have started the inner fetch, and a silent retry could duplicate a non-idempotent inner call. Correct in principle — but currently over-applied: every URL in your paste is an inner GET (
.min.js, HTML), which is safe to retry. The direct relay path already falls back to h1 on safe methods; the exit-node outer call doesn't. I'll fix that asymmetry in the next patch so inner GET/HEAD/OPTIONS can retry through the outer wrapper.Separately: the 25 s response deadline, 5 s h2 ready, and 8 s h2 connect are hardcoded constants today. I'll expose them as config so you can dial them up on bad links.
Two things from your description I want to separate from this fix:
- "slower in normal mode (without exit node)" is a different code path — exit-node mode pays an extra hop and that hardcoded 25 s outer deadline. If direct mode is also slower than upstream for you, can you share a few WARN lines from a
mode: "direct"run with no exit node configured? Different bug, want to chase it separately. - What rahgozar version are you on, and what's
request_timeout_secsin yourconfig.json?
- "slower in normal mode (without exit node)" is a different code path — exit-node mode pays an extra hop and that hardcoded 25 s outer deadline. If direct mode is also slower than upstream for you, can you share a few WARN lines from a
Hi @dazzling-no-more thank you for the response, sorry for the delay in getting back to you. The version is 2.0.3, there is no request_timeout_secs in my config! When I save the json it doesn't add it so it should be whatever defaults are hardcoded. By slower fork than the original version, I meant the normal mode not exit node mode, I don't know why but at least version 2.0.3 is very slower for me, it could be just all of those timeouts however...
How can I set : request_timeout_secs properly so it works like the original repo it was forked from? That probably solves most things?
Just tried the latest version in exit mode it's so much better so far, I see a few new errors however:
2026-05-25T17:23:19.170358Z ERROR Relay failed: relay error: fetch failed: Exception: Attribute provided with invalid value: methodYeah but after a little bit of usage things break again:
2026-05-25T17:31:52.025001Z ERROR Relay failed: timeout 2026-05-25T17:31:52.694925Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:52.695029Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player/heartbeat?alt=json and request was already sent (timeout); not falling back to direct Apps Script 2026-05-25T17:31:55.538929Z WARN ip-health: probe failed for 216.239.38.120 (1/3) 2026-05-25T17:31:56.780998Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:56.781026Z WARN exit node failed for https://wss-primary.slack.com/?token=xoxc-8101421830711-8937040029568-9169281059713-ad48807e2f850eaf8c5eeb1d427d1d7de652a99a5e78d10aa7c0abe88e277c5c&sync_desync=1&slack_client=desktop&start_args=%3Fagent%3Dclient%26org_wide_aware%3Dtrue%26agent_version%3D1779708155%26eac_cache_ts%3Dtrue%26cache_ts%3D0%26name_tagging%3Dtrue%26only_self_subteams%3Dtrue%26connect_only%3Dtrue%26ms_latest%3Dtrue&no_query_on_subscribe=1&flannel=3&lazy_channels=1&gateway_server=T082ZCDQELX-4&batch_presence_aware=1 and request was already sent (timeout); not falling back to direct Apps Script 2026-05-25T17:31:57.025897Z WARN h2 ping unanswered after 10s — closing stale connection 2026-05-25T17:31:57.026041Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:57.026028Z WARN h2 post-send failure for non-idempotent POST https://rr1---sn-tn.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&redirect_counter=1&rm=sn-4g5edr7e&rrc=104&rsdai=1&cms_redirect=yes&cmsv=e&ipbypass=yes&met=1779730186,&mh=c8&mip=35.187.134.163&mm=44&mn=sn-tn&ms=lva&mt=1779729759&mv=u&mvi=1&pl=28&lsparams=ipbypass,met,mh,mip,mm,mn,ms,mv,mvi,pl,rms&lsig=APaTxxMwRQIhAN9IkbxqKOonUNoZ3ZTbgaqH0XiOLX_e0rdHIvJ0jFEGAiB5dvukuRzlT3V0uZJjNWoMrya8iKyK5qgTOM-XLohDJA%3D%3D&rn=104&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-25T17:31:57.026151Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr1---sn-tn.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&redirect_counter=1&rm=sn-4g5edr7e&rrc=104&rsdai=1&cms_redirect=yes&cmsv=e&ipbypass=yes&met=1779730186,&mh=c8&mip=35.187.134.163&mm=44&mn=sn-tn&ms=lva&mt=1779729759&mv=u&mvi=1&pl=28&lsparams=ipbypass,met,mh,mip,mm,mn,ms,mv,mvi,pl,rms&lsig=APaTxxMwRQIhAN9IkbxqKOonUNoZ3ZTbgaqH0XiOLX_e0rdHIvJ0jFEGAiB5dvukuRzlT3V0uZJjNWoMrya8iKyK5qgTOM-XLohDJA%3D%3D&rn=104&alr=yes 2026-05-25T17:31:57.026515Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-25T17:31:57.026090Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player/heartbeat?alt=json and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-25T17:31:57.026113Z WARN h2 post-send failure for non-idempotent POST https://rr2---sn-4g5ednde.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1779730182%2C&mh=c8&mm=44%2C29&mn=sn-4g5lznes%2Csn-4g5ednde&ms=lva%2Crdu&mv=u&mvi=1&pl=54&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&mt=1779730019&fvip=2&keepalive=yes&fexp=51565115%2C51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms&lsig=APaTxxMwRAIgKq-D-qTma_dTiYPAm0oofyE-RNRcW_up8Nxki2d0AmgCIBpEULcQLKVGdC6sSVx_7TcN1KszV_22uw8FeMuuAPdJ&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&fallback_count=1&rn=103&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-25T17:31:57.027101Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr2---sn-4g5ednde.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1779730182%2C&mh=c8&mm=44%2C29&mn=sn-4g5lznes%2Csn-4g5ednde&ms=lva%2Crdu&mv=u&mvi=1&pl=54&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&mt=1779730019&fvip=2&keepalive=yes&fexp=51565115%2C51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms&lsig=APaTxxMwRAIgKq-D-qTma_dTiYPAm0oofyE-RNRcW_up8Nxki2d0AmgCIBpEULcQLKVGdC6sSVx_7TcN1KszV_22uw8FeMuuAPdJ&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&fallback_count=1&rn=103&alr=yes 2026-05-25T17:31:57.027161Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-25T17:31:57.026085Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:57.027244Z WARN exit node failed for https://www.youtube.com/api/stats/watchtime?ns=yt&el=detailpage&cpn=8HlpVLLQqBhNH9iW&ver=2&cmt=2123.668&fmt=278&fs=0&rt=76.001&euri&lact=193&live=dvr&cl=918025328&state=paused&volume=63&cbrand=apple&cbr=Chrome&cbrver=145.0.0.0&c=WEB&cver=2.20260521.00.00&cplayer=UNIPLAYER&cos=Macintosh&cosver=10_15_7&cplatform=DESKTOP&hl=en_US&cr=DE&uga=m29&rtn=116&feature=g-high-rec&afmt=140&idpj=-3&ldpj=-39&rti=76&st=3254.138&et=3254.184&muted=0&docid=3mYr_AN66Oo&ei=BocUatnON6C9hcIPp7qt-Qo&plid=AAZSp7lZnTktOhs5&referrer=https%3A%2F%2Fwww.youtube.com%2F&sdetail=p%3A%2F&sourceid=y&of=fH7Y9Q42iXLhZR6JxnvxsA&vm=CAEQARgEOjJBSHFpSlRKdVFadXl5aFF5Zm9YNXpjUGpnLTlRNUQ2N1VCeTJ6YTNENjhxVndzWXJBQWJfQUxkcUFQS1hxNnphdHZlT2hwbGRwNUJKUlVSQWVIenBEVnVvMmx3YmtnM0t0cldzTHBPVWhLUTVRa1cxY0J6dVZleW1pZF9keG5QRlVDWXJfb2RnYy1JQ1RGQi0tMDQ and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps ScriptReacted by dazzling-no-moreThanks for the new logs. Two important notes:
-
Upstream mhrv-rs has now merged the timeout/resilience part in fix(domain_fronter): large download resilience, stream timeout decoupling, and compact log timestamps #1346, and I am shipping it as
v1.9.35. That release adds a longer default stream timeout and safer handling for idempotent exit-node requests, so please retest this same case with upstreamv1.9.35+ the matching upstreamassets/apps_script/Code.gs. -
Exception: Attribute provided with invalid value: methodis different from the earlier raw-envelope / timeout issue. It usually means the Apps ScriptUrlFetchApp.fetch()options received a bad or unexpected HTTP method value. If you only see it on the fork, please report it there with the exact fork version and matching forkCode.gs; if you can reproduce it on upstreamv1.9.35, post the first few log lines before that error and the affected host.
Also, please redact query tokens from logs before posting. Some app URLs include bearer/session-like values in the query string, and GitHub issues are public.
For Slack/YouTube heartbeat/WebSocket-style endpoints, there may still be architectural limits: Apps Script is not a true long-lived streaming transport. The
v1.9.35fix should improve ordinary large downloads and safe GET retries, but it cannot make every WebSocket or heartbeat flow reliable through Apps Script.
Answered via LLM, Supervised @therealaleph
-
Hi @dazzling-no-more thank you for the response, sorry for the delay in getting back to you. The version is 2.0.3, there is no request_timeout_secs in my config! When I save the json it doesn't add it so it should be whatever defaults are hardcoded. By slower fork than the original version, I meant the normal mode not exit node mode, I don't know why but at least version 2.0.3 is very slower for me, it could be just all of those timeouts however...
How can I set : request_timeout_secs properly so it works like the original repo it was forked from? That probably solves most things?
Just tried the latest version in exit mode it's so much better so far, I see a few new errors however:
2026-05-25T17:23:19.170358Z ERROR Relay failed: relay error: fetch failed: Exception: Attribute provided with invalid value: methodYeah but after a little bit of usage things break again:
2026-05-25T17:31:52.025001Z ERROR Relay failed: timeout 2026-05-25T17:31:52.694925Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:52.695029Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player/heartbeat?alt=json and request was already sent (timeout); not falling back to direct Apps Script 2026-05-25T17:31:55.538929Z WARN ip-health: probe failed for 216.239.38.120 (1/3) 2026-05-25T17:31:56.780998Z WARN h2 exit-node outer call post-send failure: timeout — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:56.781026Z WARN exit node failed for https://wss-primary.slack.com/?token=xoxc-8101421830711-8937040029568-9169281059713-ad48807e2f850eaf8c5eeb1d427d1d7de652a99a5e78d10aa7c0abe88e277c5c&sync_desync=1&slack_client=desktop&start_args=%3Fagent%3Dclient%26org_wide_aware%3Dtrue%26agent_version%3D1779708155%26eac_cache_ts%3Dtrue%26cache_ts%3D0%26name_tagging%3Dtrue%26only_self_subteams%3Dtrue%26connect_only%3Dtrue%26ms_latest%3Dtrue&no_query_on_subscribe=1&flannel=3&lazy_channels=1&gateway_server=T082ZCDQELX-4&batch_presence_aware=1 and request was already sent (timeout); not falling back to direct Apps Script 2026-05-25T17:31:57.025897Z WARN h2 ping unanswered after 10s — closing stale connection 2026-05-25T17:31:57.026041Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:57.026028Z WARN h2 post-send failure for non-idempotent POST https://rr1---sn-tn.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&redirect_counter=1&rm=sn-4g5edr7e&rrc=104&rsdai=1&cms_redirect=yes&cmsv=e&ipbypass=yes&met=1779730186,&mh=c8&mip=35.187.134.163&mm=44&mn=sn-tn&ms=lva&mt=1779729759&mv=u&mvi=1&pl=28&lsparams=ipbypass,met,mh,mip,mm,mn,ms,mv,mvi,pl,rms&lsig=APaTxxMwRQIhAN9IkbxqKOonUNoZ3ZTbgaqH0XiOLX_e0rdHIvJ0jFEGAiB5dvukuRzlT3V0uZJjNWoMrya8iKyK5qgTOM-XLohDJA%3D%3D&rn=104&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-25T17:31:57.026151Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr1---sn-tn.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&redirect_counter=1&rm=sn-4g5edr7e&rrc=104&rsdai=1&cms_redirect=yes&cmsv=e&ipbypass=yes&met=1779730186,&mh=c8&mip=35.187.134.163&mm=44&mn=sn-tn&ms=lva&mt=1779729759&mv=u&mvi=1&pl=28&lsparams=ipbypass,met,mh,mip,mm,mn,ms,mv,mvi,pl,rms&lsig=APaTxxMwRQIhAN9IkbxqKOonUNoZ3ZTbgaqH0XiOLX_e0rdHIvJ0jFEGAiB5dvukuRzlT3V0uZJjNWoMrya8iKyK5qgTOM-XLohDJA%3D%3D&rn=104&alr=yes 2026-05-25T17:31:57.026515Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-25T17:31:57.026090Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player/heartbeat?alt=json and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-25T17:31:57.026113Z WARN h2 post-send failure for non-idempotent POST https://rr2---sn-4g5ednde.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1779730182%2C&mh=c8&mm=44%2C29&mn=sn-4g5lznes%2Csn-4g5ednde&ms=lva%2Crdu&mv=u&mvi=1&pl=54&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&mt=1779730019&fvip=2&keepalive=yes&fexp=51565115%2C51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms&lsig=APaTxxMwRAIgKq-D-qTma_dTiYPAm0oofyE-RNRcW_up8Nxki2d0AmgCIBpEULcQLKVGdC6sSVx_7TcN1KszV_22uw8FeMuuAPdJ&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&fallback_count=1&rn=103&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-25T17:31:57.027101Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr2---sn-4g5ednde.googlevideo.com/videoplayback?expire=1779751782&ei=BocUatnON6C9hcIPp7qt-Qo&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=3mYr_AN66Oo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1779730182%2C&mh=c8&mm=44%2C29&mn=sn-4g5lznes%2Csn-4g5ednde&ms=lva%2Crdu&mv=u&mvi=1&pl=54&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv9aq4GoejcGjmeNsAekHnshyVg-qPS-TQgENaLJFjPmx6Joe8_0Nr_G7woDZimhmDac_&live=1&hang=1&noclen=1&svpuc=1&ns=8xojxww-TkEakAqDvDjbFLsV&sabr=1&rqh=1®=0&mt=1779730019&fvip=2&keepalive=yes&fexp=51565115%2C51565681&c=WEB&n=y_G9JJxVx06guw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRQIhAIDFsw5pZu5MojcGEooSeKO8TAjzNnvPVBXnsqfB31yfAiAZVNYGCvFpk8fJsxFQDOzT--9FTb0i3On-SbYahhmO-A%3D%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms&lsig=APaTxxMwRAIgKq-D-qTma_dTiYPAm0oofyE-RNRcW_up8Nxki2d0AmgCIBpEULcQLKVGdC6sSVx_7TcN1KszV_22uw8FeMuuAPdJ&cpn=8HlpVLLQqBhNH9iW&cver=2.20260521.00.00&fallback_count=1&rn=103&alr=yes 2026-05-25T17:31:57.027161Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-25T17:31:57.026085Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-25T17:31:57.027244Z WARN exit node failed for https://www.youtube.com/api/stats/watchtime?ns=yt&el=detailpage&cpn=8HlpVLLQqBhNH9iW&ver=2&cmt=2123.668&fmt=278&fs=0&rt=76.001&euri&lact=193&live=dvr&cl=918025328&state=paused&volume=63&cbrand=apple&cbr=Chrome&cbrver=145.0.0.0&c=WEB&cver=2.20260521.00.00&cplayer=UNIPLAYER&cos=Macintosh&cosver=10_15_7&cplatform=DESKTOP&hl=en_US&cr=DE&uga=m29&rtn=116&feature=g-high-rec&afmt=140&idpj=-3&ldpj=-39&rti=76&st=3254.138&et=3254.184&muted=0&docid=3mYr_AN66Oo&ei=BocUatnON6C9hcIPp7qt-Qo&plid=AAZSp7lZnTktOhs5&referrer=https%3A%2F%2Fwww.youtube.com%2F&sdetail=p%3A%2F&sourceid=y&of=fH7Y9Q42iXLhZR6JxnvxsA&vm=CAEQARgEOjJBSHFpSlRKdVFadXl5aFF5Zm9YNXpjUGpnLTlRNUQ2N1VCeTJ6YTNENjhxVndzWXJBQWJfQUxkcUFQS1hxNnphdHZlT2hwbGRwNUJKUlVSQWVIenBEVnVvMmx3YmtnM0t0cldzTHBPVWhLUTVRa1cxY0J6dVZleW1pZF9keG5QRlVDWXJfb2RnYy1JQ1RGQi0tMDQ and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps ScriptCan you also test with the latest version of Rahgozar?
Hi @dazzling-no-more that's what I did but here's now the latest one that I just downloaded, some issues does exist, but it's much better, my main question is does it keep retrying h2 path? Because I find myself closing and opening it and it gets fast, then it says h2 failed at some point then it's horrible until I close and open again, so if it already doesn't have some settings for timeouts/retries would be great... like h2 should by default anyway retry forever in the background... by you know what I mean and probably maximum timeout we possibly can set (6 minutes is it?) by default? or an option to set it.
Other than that, great piece of work! Good job really this is awesome!
2026-05-27T19:24:44.195595Z WARN h2 ping unanswered after 10s — closing stale connection 2026-05-27T19:24:44.195734Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-27T19:24:44.195732Z WARN h2 post-send failure for non-idempotent POST https://rr2---sn-tn.googlevideo.com/videoplayback?expire=1779927222&ei=VjQXauSRF7SahcIP_uPHkAs&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=aNqT567uuWo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv8b_L7PSRo4xgUcbn8oBuGu4ZLVFM5FcPvW2qR48jhKrEu-a_MiZI69Tx9uG60cwl1xM&live=1&hang=1&noclen=1&svpuc=1&ns=U3B1KBuAL7dspHazmgJkDHwV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=IMxUMOZP7ddFSA&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRAIgcH3C01YmouaWbaQAgwcYJQ036QfsxbNf4b7jqkGT8G8CIGEZ82_6x4Ld301SNfQJxNH928Tt187HrYLKnGEimgV0&cpn=uBOV9dx7EY2Aw88l&cver=2.20260526.01.00&rm=sn-4g5eyy76&rrc=104&rsdai=1&ipbypass=yes&cms_redirect=yes&cmsv=e&met=1779908459,&mh=MZ&mip=35.187.134.105&mm=44&mn=sn-tn&mr=y&ms=lva&mt=1779908212&mv=u&mvi=2&pl=28&remap_counter=1&lsparams=ipbypass,met,mh,mip,mm,mn,mr,ms,mv,mvi,pl,remap_counter,rms&lsig=APaTxxMwRAIgTycCTWcJ8msLPIPF3SJHYelDT3RPAkd_UJgvSXKbY48CIAnE1zyHBMxISP5ukldbX_lPYrrleiezA7sfoEwKCnqW&rn=590&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-27T19:24:44.195740Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-27T19:24:44.195833Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr2---sn-tn.googlevideo.com/videoplayback?expire=1779927222&ei=VjQXauSRF7SahcIP_uPHkAs&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=aNqT567uuWo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv8b_L7PSRo4xgUcbn8oBuGu4ZLVFM5FcPvW2qR48jhKrEu-a_MiZI69Tx9uG60cwl1xM&live=1&hang=1&noclen=1&svpuc=1&ns=U3B1KBuAL7dspHazmgJkDHwV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=IMxUMOZP7ddFSA&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRAIgcH3C01YmouaWbaQAgwcYJQ036QfsxbNf4b7jqkGT8G8CIGEZ82_6x4Ld301SNfQJxNH928Tt187HrYLKnGEimgV0&cpn=uBOV9dx7EY2Aw88l&cver=2.20260526.01.00&rm=sn-4g5eyy76&rrc=104&rsdai=1&ipbypass=yes&cms_redirect=yes&cmsv=e&met=1779908459,&mh=MZ&mip=35.187.134.105&mm=44&mn=sn-tn&mr=y&ms=lva&mt=1779908212&mv=u&mvi=2&pl=28&remap_counter=1&lsparams=ipbypass,met,mh,mip,mm,mn,mr,ms,mv,mvi,pl,remap_counter,rms&lsig=APaTxxMwRAIgTycCTWcJ8msLPIPF3SJHYelDT3RPAkd_UJgvSXKbY48CIAnE1zyHBMxISP5ukldbX_lPYrrleiezA7sfoEwKCnqW&rn=590&alr=yes 2026-05-27T19:24:44.195804Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player?prettyPrint=false and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-27T19:24:44.196143Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-27T19:24:44.195811Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-27T19:24:44.195787Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-27T19:24:44.196196Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player?prettyPrint=false and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-27T19:24:44.195838Z WARN h2 post-send failure for non-idempotent POST https://rr2---sn-tn.googlevideo.com/videoplayback?expire=1779927222&ei=VjQXauSRF7SahcIP_uPHkAs&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=aNqT567uuWo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv8b_L7PSRo4xgUcbn8oBuGu4ZLVFM5FcPvW2qR48jhKrEu-a_MiZI69Tx9uG60cwl1xM&live=1&hang=1&noclen=1&svpuc=1&ns=U3B1KBuAL7dspHazmgJkDHwV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=IMxUMOZP7ddFSA&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRAIgcH3C01YmouaWbaQAgwcYJQ036QfsxbNf4b7jqkGT8G8CIGEZ82_6x4Ld301SNfQJxNH928Tt187HrYLKnGEimgV0&cpn=uBOV9dx7EY2Aw88l&cver=2.20260526.01.00&rm=sn-4g5eyy76&rrc=104&rsdai=1&ipbypass=yes&cms_redirect=yes&cmsv=e&met=1779908459,&mh=MZ&mip=35.187.134.105&mm=44&mn=sn-tn&mr=y&ms=lva&mt=1779908212&mv=u&mvi=2&pl=28&remap_counter=1&lsparams=ipbypass,met,mh,mip,mm,mn,mr,ms,mv,mvi,pl,remap_counter,rms&lsig=APaTxxMwRAIgTycCTWcJ8msLPIPF3SJHYelDT3RPAkd_UJgvSXKbY48CIAnE1zyHBMxISP5ukldbX_lPYrrleiezA7sfoEwKCnqW&rn=592&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-27T19:24:44.196292Z WARN h2 post-send failure for non-idempotent POST https://rr2---sn-tn.googlevideo.com/videoplayback?expire=1779927222&ei=VjQXauSRF7SahcIP_uPHkAs&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=aNqT567uuWo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv8b_L7PSRo4xgUcbn8oBuGu4ZLVFM5FcPvW2qR48jhKrEu-a_MiZI69Tx9uG60cwl1xM&live=1&hang=1&noclen=1&svpuc=1&ns=U3B1KBuAL7dspHazmgJkDHwV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=IMxUMOZP7ddFSA&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRAIgcH3C01YmouaWbaQAgwcYJQ036QfsxbNf4b7jqkGT8G8CIGEZ82_6x4Ld301SNfQJxNH928Tt187HrYLKnGEimgV0&cpn=uBOV9dx7EY2Aw88l&cver=2.20260526.01.00&rm=sn-4g5eyy76&rrc=104&rsdai=1&ipbypass=yes&cms_redirect=yes&cmsv=e&met=1779908459,&mh=MZ&mip=35.187.134.105&mm=44&mn=sn-tn&mr=y&ms=lva&mt=1779908212&mv=u&mvi=2&pl=28&remap_counter=1&lsparams=ipbypass,met,mh,mip,mm,mn,mr,ms,mv,mvi,pl,remap_counter,rms&lsig=APaTxxMwRAIgTycCTWcJ8msLPIPF3SJHYelDT3RPAkd_UJgvSXKbY48CIAnE1zyHBMxISP5ukldbX_lPYrrleiezA7sfoEwKCnqW&rn=591&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-27T19:24:44.196342Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr2---sn-tn.googlevideo.com/videoplayback?expire=1779927222&ei=VjQXauSRF7SahcIP_uPHkAs&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=aNqT567uuWo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv8b_L7PSRo4xgUcbn8oBuGu4ZLVFM5FcPvW2qR48jhKrEu-a_MiZI69Tx9uG60cwl1xM&live=1&hang=1&noclen=1&svpuc=1&ns=U3B1KBuAL7dspHazmgJkDHwV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=IMxUMOZP7ddFSA&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRAIgcH3C01YmouaWbaQAgwcYJQ036QfsxbNf4b7jqkGT8G8CIGEZ82_6x4Ld301SNfQJxNH928Tt187HrYLKnGEimgV0&cpn=uBOV9dx7EY2Aw88l&cver=2.20260526.01.00&rm=sn-4g5eyy76&rrc=104&rsdai=1&ipbypass=yes&cms_redirect=yes&cmsv=e&met=1779908459,&mh=MZ&mip=35.187.134.105&mm=44&mn=sn-tn&mr=y&ms=lva&mt=1779908212&mv=u&mvi=2&pl=28&remap_counter=1&lsparams=ipbypass,met,mh,mip,mm,mn,mr,ms,mv,mvi,pl,remap_counter,rms&lsig=APaTxxMwRAIgTycCTWcJ8msLPIPF3SJHYelDT3RPAkd_UJgvSXKbY48CIAnE1zyHBMxISP5ukldbX_lPYrrleiezA7sfoEwKCnqW&rn=592&alr=yes 2026-05-27T19:24:44.196368Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr2---sn-tn.googlevideo.com/videoplayback?expire=1779927222&ei=VjQXauSRF7SahcIP_uPHkAs&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=aNqT567uuWo.1&source=yt_live_broadcast&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=lva%2Clva&ss=1&ssa=1&siu=1&spc=96Xrv8b_L7PSRo4xgUcbn8oBuGu4ZLVFM5FcPvW2qR48jhKrEu-a_MiZI69Tx9uG60cwl1xM&live=1&hang=1&noclen=1&svpuc=1&ns=U3B1KBuAL7dspHazmgJkDHwV&sabr=1&rqh=1®=0&keepalive=yes&fexp=51565115,51565681&c=WEB&n=IMxUMOZP7ddFSA&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Css%2Cssa%2Csiu%2Cspc%2Clive%2Chang%2Cnoclen%2Csvpuc%2Cns%2Csabr%2Crqh%2Creg&sig=AHEqNM4wRAIgcH3C01YmouaWbaQAgwcYJQ036QfsxbNf4b7jqkGT8G8CIGEZ82_6x4Ld301SNfQJxNH928Tt187HrYLKnGEimgV0&cpn=uBOV9dx7EY2Aw88l&cver=2.20260526.01.00&rm=sn-4g5eyy76&rrc=104&rsdai=1&ipbypass=yes&cms_redirect=yes&cmsv=e&met=1779908459,&mh=MZ&mip=35.187.134.105&mm=44&mn=sn-tn&mr=y&ms=lva&mt=1779908212&mv=u&mvi=2&pl=28&remap_counter=1&lsparams=ipbypass,met,mh,mip,mm,mn,mr,ms,mv,mvi,pl,remap_counter,rms&lsig=APaTxxMwRAIgTycCTWcJ8msLPIPF3SJHYelDT3RPAkd_UJgvSXKbY48CIAnE1zyHBMxISP5ukldbX_lPYrrleiezA7sfoEwKCnqW&rn=591&alr=yes 2026-05-27T19:24:44.196513Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-27T19:24:44.196255Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-27T19:24:44.195960Z WARN h2 post-send failure for non-idempotent POST https://rr5---sn-5ualdnsl.googlevideo.com/videoplayback?expire=1779931457&ei=4UQXarSJKqaAi9oPw7_5oAY&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=o-AJbyC8wxqNUDsldWKqRK--P8J42j_bVIX5JmQ-Mh0A4X&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=au%2Cau&siu=1&spc=96Xrvx67ax-3BrwgOssnfoV0XZ56Kp7sHhWA7ilhOEWwN6Eda-vkxtp4mqUAf-H7Xs_FUUaIzV0&svpuc=1&ns=4-6fGPY233NQ-fTQz-l4ebYV&sabr=1&rqh=1&keepalive=yes&fexp=51565115,51565681&c=WEB&n=_GKGHCU4YSoScw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cspc%2Csvpuc%2Cns%2Csabr%2Crqh&sig=AHEqNM4wRAIgJubJ9DVDQ19VdwfRwpo1HeIiONDWOeo0btR4gPjmyF4CIBRjL0wkAMbVw4r8yu9LkVAiHeE5fpS4_aU0_co4kZya&cpn=VuNnB2b5885m6ICd&cver=2.20260526.08.00&redirect_counter=1&rm=sn-4g5eys76&rrc=104&cms_redirect=yes&cmsv=e&cps=143&ipbypass=yes&met=1779909869,&mh=M5&mip=107.178.193.206&mm=31&mn=sn-5ualdnsl&ms=au&mt=1779909437&mv=m&mvi=5&pl=28&lsparams=cps,ipbypass,met,mh,mip,mm,mn,ms,mv,mvi,pl,rms&lsig=APaTxxMwRAIgfnOazzSHQndCkyr6E8nx7hS7Jdo1PEw85TiSoEH_Ap4CIEKx6d3vS3kmPNQXD9_8fIGCnne-EvoMwh3Qqz9r4zNf&rn=3&alr=yes: relay error: h2 body chunk: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-27T19:24:44.196341Z WARN h2 post-send failure for non-idempotent POST https://rr5---sn-4g5lzner.googlevideo.com/videoplayback?expire=1779931457&ei=4UQXarSJKqaAi9oPw7_5oAY&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=o-AJbyC8wxqNUDsldWKqRK--P8J42j_bVIX5JmQ-Mh0A4X&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=237&met=1779909857%2C&mh=M5&mm=31%2C29&mn=sn-4g5edndy%2Csn-4g5lzner&ms=au%2Crdu&mv=m&mvi=5&pl=54&rms=au%2Cau&initcwndbps=1843750&siu=1&spc=96Xrvx67ax-3BrwgOssnfoV0XZ56Kp7sHhWA7ilhOEWwN6Eda-vkxtp4mqUAf-H7Xs_FUUaIzV0&svpuc=1&ns=4-6fGPY233NQ-fTQz-l4ebYV&sabr=1&rqh=1&mt=1779908973&fvip=5&keepalive=yes&fexp=51565115%2C51565681&c=WEB&n=_GKGHCU4YSoScw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cspc%2Csvpuc%2Cns%2Csabr%2Crqh&sig=AHEqNM4wRAIgJubJ9DVDQ19VdwfRwpo1HeIiONDWOeo0btR4gPjmyF4CIBRjL0wkAMbVw4r8yu9LkVAiHeE5fpS4_aU0_co4kZya&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhANXhDIFbP7Z7JudZuHyAnaVuG1g8L4tlJt-mk4ounXsvAiEA-F9kQ3gMzBioQzkdn1A1sK1zg5CJvwKUC-iUaIeSu4Q%3D&cpn=VuNnB2b5885m6ICd&cver=2.20260526.08.00&fallback_count=1&rn=4&alr=yes: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating side effects 2026-05-27T19:24:44.195829Z WARN h2 exit-node outer call post-send failure: relay error: h2 response: stream closed because of a broken pipe — marking non-retryable to prevent duplicating the inner request 2026-05-27T19:24:44.195858Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player?prettyPrint=false and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-27T19:24:44.197233Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player?prettyPrint=false and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-27T19:24:44.196400Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe 2026-05-27T19:24:44.196242Z WARN exit node failed for https://www.youtube.com/generate_204 and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-27T19:24:44.196876Z WARN exit node failed for https://www.youtube.com/youtubei/v1/player?prettyPrint=false and request was already sent (relay error: h2 response: stream closed because of a broken pipe); not falling back to direct Apps Script 2026-05-27T19:24:44.197133Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 body chunk: stream closed because of a broken pipe); not duplicating POST https://rr5---sn-5ualdnsl.googlevideo.com/videoplayback?expire=1779931457&ei=4UQXarSJKqaAi9oPw7_5oAY&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=o-AJbyC8wxqNUDsldWKqRK--P8J42j_bVIX5JmQ-Mh0A4X&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&rms=au%2Cau&siu=1&spc=96Xrvx67ax-3BrwgOssnfoV0XZ56Kp7sHhWA7ilhOEWwN6Eda-vkxtp4mqUAf-H7Xs_FUUaIzV0&svpuc=1&ns=4-6fGPY233NQ-fTQz-l4ebYV&sabr=1&rqh=1&keepalive=yes&fexp=51565115,51565681&c=WEB&n=_GKGHCU4YSoScw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cspc%2Csvpuc%2Cns%2Csabr%2Crqh&sig=AHEqNM4wRAIgJubJ9DVDQ19VdwfRwpo1HeIiONDWOeo0btR4gPjmyF4CIBRjL0wkAMbVw4r8yu9LkVAiHeE5fpS4_aU0_co4kZya&cpn=VuNnB2b5885m6ICd&cver=2.20260526.08.00&redirect_counter=1&rm=sn-4g5eys76&rrc=104&cms_redirect=yes&cmsv=e&cps=143&ipbypass=yes&met=1779909869,&mh=M5&mip=107.178.193.206&mm=31&mn=sn-5ualdnsl&ms=au&mt=1779909437&mv=m&mvi=5&pl=28&lsparams=cps,ipbypass,met,mh,mip,mm,mn,ms,mv,mvi,pl,rms&lsig=APaTxxMwRAIgfnOazzSHQndCkyr6E8nx7hS7Jdo1PEw85TiSoEH_Ap4CIEKx6d3vS3kmPNQXD9_8fIGCnne-EvoMwh3Qqz9r4zNf&rn=3&alr=yes 2026-05-27T19:24:44.197186Z WARN relay attempt 1 failed and is non-retryable (relay error: h2 response: stream closed because of a broken pipe); not duplicating POST https://rr5---sn-4g5lzner.googlevideo.com/videoplayback?expire=1779931457&ei=4UQXarSJKqaAi9oPw7_5oAY&ip=2a01%3A4f8%3Ac010%3A365e%3Ab2%3A%3A1&id=o-AJbyC8wxqNUDsldWKqRK--P8J42j_bVIX5JmQ-Mh0A4X&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=237&met=1779909857%2C&mh=M5&mm=31%2C29&mn=sn-4g5edndy%2Csn-4g5lzner&ms=au%2Crdu&mv=m&mvi=5&pl=54&rms=au%2Cau&initcwndbps=1843750&siu=1&spc=96Xrvx67ax-3BrwgOssnfoV0XZ56Kp7sHhWA7ilhOEWwN6Eda-vkxtp4mqUAf-H7Xs_FUUaIzV0&svpuc=1&ns=4-6fGPY233NQ-fTQz-l4ebYV&sabr=1&rqh=1&mt=1779908973&fvip=5&keepalive=yes&fexp=51565115%2C51565681&c=WEB&n=_GKGHCU4YSoScw&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Csiu%2Cspc%2Csvpuc%2Cns%2Csabr%2Crqh&sig=AHEqNM4wRAIgJubJ9DVDQ19VdwfRwpo1HeIiONDWOeo0btR4gPjmyF4CIBRjL0wkAMbVw4r8yu9LkVAiHeE5fpS4_aU0_co4kZya&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhANXhDIFbP7Z7JudZuHyAnaVuG1g8L4tlJt-mk4ounXsvAiEA-F9kQ3gMzBioQzkdn1A1sK1zg5CJvwKUC-iUaIeSu4Q%3D&cpn=VuNnB2b5885m6ICd&cver=2.20260526.08.00&fallback_count=1&rn=4&alr=yes 2026-05-27T19:24:44.198393Z ERROR Relay failed: relay error: h2 body chunk: stream closed because of a broken pipe 2026-05-27T19:24:44.198437Z ERROR Relay failed: relay error: h2 response: stream closed because of a broken pipe2026-05-27T19:39:03.698384Z ERROR Relay failed: relay error: fetch failed: Exception: Attribute provided with invalid value: method@Stevemoretz
Thanks for the detailed test report, glad the new build is much better!Quick answer on the h2 question: yes, h2 already auto-retries. You don't need to close and reopen — when an h2 connection dies, the very next request reopens a fresh one. There is no sticky "h2 disabled" state from a broken-pipe death; the only permanent disable is when the peer refuses h2 via ALPN entirely, and that isn't what's happening here.
What you're seeing in the log is not "h2 gave up." Those
marking non-retryable to prevent duplicating the inner requestlines are intentional — they're about the requests that were already in flight at the moment the connection died. A POST whose body may have already reached YouTube's origin can't safely be replayed (duplicate uploads, double playback-tracking calls, etc.), so we surface the failure instead of silently doubling side effects. The next request after the death still uses h2.The death detection itself is app-level PINGs every 15s with a 10s PONG budget, so worst case the dead connection is replaced ~25s after it actually died. The "close and reopen makes it fast again" feeling is just that a restart happens to align you with a fresh connection — if you wait ~30s the same recovery happens on its own.
Timeout knob already exists:
request_timeout_secsin your config (default 30s, accepts 5–300). Bumping it to 300 gives you a 5-minute per-request budget. The 6-minute figure you're remembering is Apps Script's hard execution ceiling — that's upstream from this client and not something I can extend past.I'm not going to make POSTs retry-forever — that's a footgun on non-idempotent calls and would cause exactly the kind of duplicate-side-effects we're trying to prevent. But if you can catch a case where the h2 path isn't being reopened after a death (i.e. you see a death burst at T, then 30–60s of h1-only traffic and no
h2 connection established to relay edgelog line), please grab logs around that window and I'll dig in.
This is my config.json after deploying to Deno with the newest version of exit_node (successful deploy with no errors):
This is report of the deploy in the Playground in Deno:

But when I check domains in 'hosts' section, either they still couldn't be opened or I get a blank screen and
'GET https://chatgpt.com/ net::ERR_CONTENT_DECODING_FAILED 200 (OK)'error in console