From 60106955ab92373542a15b3a72833c516aea4f3d Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 May 2026 14:04:11 +0400 Subject: [PATCH] v2.2.1: add 180s upstream timeout to prevent hanging connections - All urlopen() calls now have timeout=180 to prevent infinite hangs - Crof upstream can idle between SSE chunks, causing proxy to block forever - Tested: kimi-k2.6 + mimo-v2.5-pro both stream completed successfully --- codex-launcher_2.2.1_all.deb | Bin 24532 -> 24534 bytes src/translate-proxy.py | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/codex-launcher_2.2.1_all.deb b/codex-launcher_2.2.1_all.deb index f04d7df2cacbb7410dc537188b3a6b00a2dc0508..cd9970c9b92b3fce96053cc899c6e720e1d6c59a 100644 GIT binary patch delta 23253 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 delta 23275 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 diff --git a/src/translate-proxy.py b/src/translate-proxy.py index eff1a26..f3c5c44 100755 --- a/src/translate-proxy.py +++ b/src/translate-proxy.py @@ -1035,7 +1035,7 @@ class Handler(http.server.BaseHTTPRequestHandler): if stream: try: - upstream = urllib.request.urlopen(req) + upstream = urllib.request.urlopen(req, timeout=180) except urllib.error.HTTPError as e: err = e.read().decode() return self.send_json(e.code, {"error": {"type": "upstream_error", "message": err}}) @@ -1064,7 +1064,7 @@ class Handler(http.server.BaseHTTPRequestHandler): store_response(last_resp_id, body.get("input", ""), last_output) else: try: - upstream = urllib.request.urlopen(req) + upstream = urllib.request.urlopen(req, timeout=180) except urllib.error.HTTPError as e: err = e.read().decode() return self.send_json(e.code, {"error": {"type": "upstream_error", "message": err}}) @@ -1081,7 +1081,7 @@ class Handler(http.server.BaseHTTPRequestHandler): def _forward(self, req, stream, model, nonstream_fn, stream_fn, input_data=None): try: - upstream = urllib.request.urlopen(req) + upstream = urllib.request.urlopen(req, timeout=180) except urllib.error.HTTPError as e: err = e.read().decode() return self.send_json(e.code, {"error": {"type": "upstream_error", "message": err}})