From bf9e390cf4ce59cc6e31b117993f36b264c41ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 28 Mar 2026 18:46:10 +0800 Subject: [PATCH] fix(ccm,ocm): allow reverse connector credentials to serve local requests Connector mode credentials were unconditionally blocked from local use by unavailableError(), despite having a working forwardHTTPClient. Also set credentialDialer in OCM connector mode to prevent nil panic in WebSocket handler. --- service/ccm/credential_external.go | 3 --- service/ocm/credential_external.go | 4 +--- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/service/ccm/credential_external.go b/service/ccm/credential_external.go index c0714641a..deb8436f4 100644 --- a/service/ccm/credential_external.go +++ b/service/ccm/credential_external.go @@ -372,9 +372,6 @@ func (c *externalCredential) earliestReset() time.Time { } func (c *externalCredential) unavailableError() error { - if c.reverse && c.connectorURL != nil { - return E.New("credential ", c.tag, " is unavailable: reverse connector credentials cannot serve local requests") - } if c.baseURL == reverseProxyBaseURL { session := c.getReverseSession() if session == nil || session.IsClosed() { diff --git a/service/ocm/credential_external.go b/service/ocm/credential_external.go index 222a22e94..29a80a909 100644 --- a/service/ocm/credential_external.go +++ b/service/ocm/credential_external.go @@ -197,6 +197,7 @@ func newExternalCredential(ctx context.Context, tag string, options option.OCMEx if options.Reverse { // Connector mode: we dial out to serve, not to proxy + credential.credentialDialer = credentialDialer credential.connectorDialer = credentialDialer if options.Server != "" { credential.connectorDestination = M.ParseSocksaddrHostPort(options.Server, externalCredentialServerPort(parsedURL, options.ServerPort)) @@ -407,9 +408,6 @@ func (c *externalCredential) earliestReset() time.Time { } func (c *externalCredential) unavailableError() error { - if c.reverse && c.connectorURL != nil { - return E.New("credential ", c.tag, " is unavailable: reverse connector credentials cannot serve local requests") - } if c.baseURL == reverseProxyBaseURL { session := c.getReverseSession() if session == nil || session.IsClosed() {