From 6cc7454049ce65ba8c79824591b41755372632aa Mon Sep 17 00:00:00 2001 From: digua Date: Fri, 26 Jun 2026 09:47:48 +0800 Subject: [PATCH] fix(electron): preserve socks proxy fallback Return a recorded SOCKS proxy before a fallback DIRECT rule so local model downloads fail explicitly instead of silently bypassing the configured system proxy. --- apps/desktop/main/network/proxy-resolver.test.ts | 1 + apps/desktop/main/network/proxy-resolver.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/desktop/main/network/proxy-resolver.test.ts b/apps/desktop/main/network/proxy-resolver.test.ts index 351b7d79..c56922c9 100644 --- a/apps/desktop/main/network/proxy-resolver.test.ts +++ b/apps/desktop/main/network/proxy-resolver.test.ts @@ -14,6 +14,7 @@ test('proxyUrlFromElectronResolvedProxy returns the first usable model download proxyUrlFromElectronResolvedProxy('SOCKS5 127.0.0.1:1080; PROXY 127.0.0.1:7890'), 'http://127.0.0.1:7890' ) + assert.equal(proxyUrlFromElectronResolvedProxy('SOCKS5 127.0.0.1:1080; DIRECT'), 'socks5://127.0.0.1:1080') assert.equal(proxyUrlFromElectronResolvedProxy('SOCKS5 127.0.0.1:1080'), 'socks5://127.0.0.1:1080') assert.equal(proxyUrlFromElectronResolvedProxy('SOCKS 127.0.0.1:1080'), 'socks://127.0.0.1:1080') }) diff --git a/apps/desktop/main/network/proxy-resolver.ts b/apps/desktop/main/network/proxy-resolver.ts index 098fab35..f128050d 100644 --- a/apps/desktop/main/network/proxy-resolver.ts +++ b/apps/desktop/main/network/proxy-resolver.ts @@ -10,7 +10,7 @@ export function proxyUrlFromElectronResolvedProxy(resolvedProxy: string): string for (const rawRule of resolvedProxy.split(';')) { const rule = rawRule.trim() if (!rule) continue - if (rule.toUpperCase() === 'DIRECT') return undefined + if (rule.toUpperCase() === 'DIRECT') return firstSocksProxyUrl const [schemeRaw, targetRaw] = rule.split(/\s+/, 2) const scheme = schemeRaw?.toUpperCase()