From e40c571009f660aba634ad64c442ef9e46f01885 Mon Sep 17 00:00:00 2001 From: Flowseal Date: Wed, 17 Jun 2026 10:25:45 +0300 Subject: [PATCH] #646 fixes --- proxy/bridge.py | 5 ++++- proxy/tg_ws_proxy.py | 2 +- utils/default_config.py | 1 + utils/tray_common.py | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/proxy/bridge.py b/proxy/bridge.py index 6133476..cdbca37 100644 --- a/proxy/bridge.py +++ b/proxy/bridge.py @@ -275,6 +275,9 @@ async def _ws_keepalive(ws, interval: float): """ if interval <= 0: return + + interval = max(1.0, interval) # reasonable minimum + try: while True: await asyncio.sleep(interval) @@ -354,7 +357,7 @@ async def bridge_ws_reencrypt(reader, writer, ws: RawWebSocket, label, tasks = [asyncio.create_task(tcp_to_ws()), asyncio.create_task(ws_to_tcp())] - keepalive = asyncio.ensure_future( + keepalive = asyncio.create_task( _ws_keepalive(ws, proxy_config.ws_keepalive_interval)) try: await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED) diff --git a/proxy/tg_ws_proxy.py b/proxy/tg_ws_proxy.py index 5589c8e..faa744b 100644 --- a/proxy/tg_ws_proxy.py +++ b/proxy/tg_ws_proxy.py @@ -633,7 +633,7 @@ def main(): proxy_config.cfproxy_worker_domains = coerce_domain_list(args.cfproxy_worker_domain) proxy_config.fake_tls_domain = args.fake_tls_domain.strip() proxy_config.proxy_protocol = args.proxy_protocol - proxy_config.ws_keepalive_interval = max(0.0, args.ws_keepalive) + proxy_config.ws_keepalive_interval = max(0, args.ws_keepalive) log_level = logging.DEBUG if args.verbose else logging.INFO log_fmt = logging.Formatter('%(asctime)s %(levelname)-5s %(message)s', diff --git a/utils/default_config.py b/utils/default_config.py index 097706a..1c04cae 100644 --- a/utils/default_config.py +++ b/utils/default_config.py @@ -20,6 +20,7 @@ _TRAY_DEFAULTS_COMMON: Dict[str, Any] = { "cfproxy": True, "cfproxy_user_domain": [], "cfproxy_worker_domain": [], + "ws_keepalive_interval": 30 } diff --git a/utils/tray_common.py b/utils/tray_common.py index 9739b81..36b88dc 100644 --- a/utils/tray_common.py +++ b/utils/tray_common.py @@ -268,6 +268,7 @@ def apply_proxy_config(cfg: dict) -> bool: pc.fallback_cfproxy = cfg.get("cfproxy", DEFAULT_CONFIG["cfproxy"]) pc.cfproxy_user_domains = coerce_domain_list(cfg.get("cfproxy_user_domain", DEFAULT_CONFIG["cfproxy_user_domain"])) pc.cfproxy_worker_domains = coerce_domain_list(cfg.get("cfproxy_worker_domain", DEFAULT_CONFIG["cfproxy_worker_domain"])) + pc.ws_keepalive_interval = max(0, cfg.get("ws_keepalive_interval", DEFAULT_CONFIG["ws_keepalive_interval"])) return True