Fix fallback discovery success

This commit is contained in:
Virgil 2026-04-03 22:38:24 +00:00
parent f5eb0d7d4f
commit d838936a2d
2 changed files with 28 additions and 1 deletions

View file

@ -591,7 +591,7 @@ func (service *Service) Discover() error {
return err
}
service.replaceRecords(discovered)
return err
return nil
}
service.replaceRecords(discovered)
return nil

View file

@ -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