From d838936a2dbd242da57195c094e19493bf0ec520 Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 22:38:24 +0000 Subject: [PATCH] Fix fallback discovery success --- service.go | 2 +- service_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/service.go b/service.go index bc5721d..8e33c88 100644 --- a/service.go +++ b/service.go @@ -591,7 +591,7 @@ func (service *Service) Discover() error { return err } service.replaceRecords(discovered) - return err + return nil } service.replaceRecords(discovered) return nil diff --git a/service_test.go b/service_test.go index ce13afc..47b9d0f 100644 --- a/service_test.go +++ b/service_test.go @@ -1212,6 +1212,33 @@ func TestServiceDiscoverFallsBackWhenPrimaryDiscovererFails(t *testing.T) { } } +func TestServiceDiscoverReturnsNilAfterFallbackDiscoverySucceeds(t *testing.T) { + service := NewService(ServiceOptions{ + RecordDiscoverer: func() (map[string]NameRecords, error) { + return nil, errors.New("primary discoverer failed") + }, + FallbackRecordDiscoverer: func() (map[string]NameRecords, error) { + return map[string]NameRecords{ + "gateway.charon.lthn": { + A: []string{"10.10.10.10"}, + }, + }, nil + }, + }) + + if err := service.Discover(); err != nil { + t.Fatalf("expected fallback discovery success to return nil, got %v", err) + } + + result, ok := service.Resolve("gateway.charon.lthn") + if !ok { + t.Fatal("expected fallback record to resolve after discovery") + } + if len(result.A) != 1 || result.A[0] != "10.10.10.10" { + t.Fatalf("unexpected fallback resolve result: %#v", result.A) + } +} + func TestServiceDiscoverUsesFallbackOnlyWhenPrimaryMissing(t *testing.T) { fallbackCalled := false