From 13a945703c6af7a60379ed824cbc1123fe715b04 Mon Sep 17 00:00:00 2001 From: Florian Date: Thu, 5 Feb 2026 15:48:10 +0100 Subject: [PATCH] fix: always prefer settings endpoint for SQD vendor The SQD vendor now always prefers the endpoint from settings if it contains {chainId}, rather than only using it when upstream.Endpoint is empty. This fixes an issue where overrides could inadvertently set an empty endpoint that prevented the settings endpoint from being used. Co-Authored-By: Claude Opus 4.5 --- thirdparty/sqd.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/thirdparty/sqd.go b/thirdparty/sqd.go index 6b6c2b1ab..3c388cc52 100644 --- a/thirdparty/sqd.go +++ b/thirdparty/sqd.go @@ -71,13 +71,13 @@ func (v *SqdVendor) GenerateConfigs(ctx context.Context, logger *zerolog.Logger, return nil, fmt.Errorf("sqd vendor requires upstream.evm.chainId to be defined") } - // If endpoint not set on upstream, read from settings - if upstream.Endpoint == "" { - endpoint, ok := settings["endpoint"].(string) - if !ok || endpoint == "" { - return nil, fmt.Errorf("sqd vendor requires endpoint in upstream config or settings") - } - upstream.Endpoint = endpoint + // Always prefer endpoint from settings if it contains {chainId} placeholder + // This ensures the provider's configured endpoint takes precedence over any + // empty or invalid endpoint that might be set on the upstream from overrides + if settingsEndpoint, ok := settings["endpoint"].(string); ok && settingsEndpoint != "" && strings.Contains(settingsEndpoint, "{chainId}") { + upstream.Endpoint = settingsEndpoint + } else if upstream.Endpoint == "" { + return nil, fmt.Errorf("sqd vendor requires endpoint in settings with {chainId} placeholder") } if !strings.Contains(upstream.Endpoint, "{chainId}") {