From 7ce4297e9f10c3a1263fb43c69b75df71423083a Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 22:57:00 +0000 Subject: [PATCH] Handle empty DNS discovery as a no-op --- service.go | 18 ++++++++---------- service_test.go | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/service.go b/service.go index 880e234..6ab764c 100644 --- a/service.go +++ b/service.go @@ -251,11 +251,6 @@ func (service *Service) resolveHSDClient(client *HSDClient) (*HSDClient, error) } func (service *Service) DiscoverFromChainAliases(ctx context.Context, client *HSDClient) error { - effectiveHSDClient, err := service.resolveHSDClient(client) - if err != nil { - return err - } - aliases, found, err := service.discoverAliasesFromSources( ctx, service.chainAliasActionCaller, @@ -270,6 +265,10 @@ func (service *Service) DiscoverFromChainAliases(ctx context.Context, client *HS if !found { return nil } + effectiveHSDClient, err := service.resolveHSDClient(client) + if err != nil { + return err + } if len(aliases) == 0 { now := time.Now() fingerprint := aliasFingerprint(aliases) @@ -457,11 +456,6 @@ func parseActionAliasRecord(record map[string]any) (string, error) { // dns.NewHSDClient(dns.HSDClientOptions{URL: "http://127.0.0.1:14037"}), // ) func (service *Service) DiscoverFromMainchainAliases(ctx context.Context, chainClient *MainchainAliasClient, hsdClient *HSDClient) error { - effectiveHSDClient, err := service.resolveHSDClient(hsdClient) - if err != nil { - return err - } - effectiveChainClient := chainClient if effectiveChainClient == nil { effectiveChainClient = service.mainchainAliasClient @@ -497,6 +491,10 @@ func (service *Service) DiscoverFromMainchainAliases(ctx context.Context, chainC if !found { return nil } + effectiveHSDClient, err := service.resolveHSDClient(hsdClient) + if err != nil { + return err + } if len(aliases) == 0 { now := time.Now() fingerprint := aliasFingerprint(aliases) diff --git a/service_test.go b/service_test.go index 71aa1e7..3f98ebb 100644 --- a/service_test.go +++ b/service_test.go @@ -1615,6 +1615,25 @@ func TestServiceDiscoverReturnsNilWithoutDiscoverer(t *testing.T) { } } +func TestServiceDiscoverAliasesReturnsNilWithoutDiscovererOrHSDClient(t *testing.T) { + service := NewService(ServiceOptions{ + Records: map[string]NameRecords{ + "gateway.charon.lthn": { + A: []string{"10.10.10.10"}, + }, + }, + }) + + if err := service.DiscoverAliases(context.Background()); err != nil { + t.Fatalf("expected discover aliases to no-op without sources or HSD client: %v", err) + } + + result, ok := service.Resolve("gateway.charon.lthn") + if !ok || len(result.A) != 1 || result.A[0] != "10.10.10.10" { + t.Fatalf("expected cached record to remain intact, got %#v (ok=%t)", result, ok) + } +} + func TestServiceServeResolvesAAndAAAARecords(t *testing.T) { service := NewService(ServiceOptions{ Records: map[string]NameRecords{