fix: OAuth client 强制 HTTP/1.1 + 代理路由调试日志

- createReqClient: EnableForceHTTP1() 避免 H2 ALPN 升级与自定义 TLS dialer 冲突
- 超时从 15s 延长到 30s
- 增加代理路由日志,方便诊断 proxy_id 是否正确传递
- proxyurl.Parse 返回的 parsedProxy 直接复用,省去二次 url.Parse
This commit is contained in:
win 2026-04-01 12:34:46 +08:00
parent b285fb7b2f
commit 1182647a59

View File

@ -278,20 +278,20 @@ func createReqClient(proxyURL string) (*req.Client, error) {
}
client := req.C().
SetTimeout(15 * time.Second).
SetCookieJar(nil) // 禁用 CookieJar确保每次授权都是干净的会话
SetTimeout(30 * time.Second).
SetCookieJar(nil). // 禁用 CookieJar确保每次授权都是干净的会话
EnableForceHTTP1() // 强制 HTTP/1.1,避免 H2 升级与自定义 TLS dialer 冲突
trimmed, _, err := proxyurl.Parse(proxyURL)
trimmed, parsedProxy, err := proxyurl.Parse(proxyURL)
if err != nil {
return nil, err
}
if trimmed != "" {
parsedProxy, parseErr := url.Parse(trimmed)
if parseErr != nil {
return nil, fmt.Errorf("parse proxy URL: %w", parseErr)
}
logger.LegacyPrintf("repository.claude_oauth", "[OAuth] createReqClient: proxyURL=%q trimmed=%q", logredact.RedactProxyURL(proxyURL), logredact.RedactProxyURL(trimmed))
if trimmed != "" && parsedProxy != nil {
scheme := strings.ToLower(parsedProxy.Scheme)
logger.LegacyPrintf("repository.claude_oauth", "[OAuth] createReqClient: using proxy scheme=%s host=%s", scheme, parsedProxy.Hostname())
switch scheme {
case "socks5", "socks5h":
socks5Dialer := tlsfingerprint.NewSOCKS5ProxyDialer(profile, parsedProxy)
@ -303,6 +303,7 @@ func createReqClient(proxyURL string) (*req.Client, error) {
client.SetProxyURL(trimmed)
}
} else {
logger.LegacyPrintf("repository.claude_oauth", "[OAuth] createReqClient: no proxy, using direct connection with utls")
dialer := tlsfingerprint.NewDialer(profile, nil)
client.SetDialTLS(dialer.DialTLSContext)
}