@@ -18,7 +18,6 @@ package wrappers
1818
1919import (
2020 "context"
21- "maps"
2221 "net"
2322
2423 log "github.com/sirupsen/logrus"
@@ -76,17 +75,19 @@ func (rs *resolveTarget) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, e
7675 result := make ([]* endpoint.Endpoint , 0 , len (endpoints ))
7776 for _ , ep := range endpoints {
7877 if ep == nil {
79- result = append (result , nil )
8078 continue
8179 }
8280
83- shouldResolve := false
84- if v , ok := ep . GetProviderSpecificProperty ( "resolve-target" ); ok {
85- shouldResolve = v == "true"
86- ep . DeleteProviderSpecificProperty ( "resolve-target" )
81+ // Skip early if not a CNAME record, as only those can have hostname targets that need resolution.
82+ if ep . RecordType != endpoint . RecordTypeCNAME {
83+ result = append ( result , ep )
84+ continue
8785 }
8886
89- if ! shouldResolve || ep .RecordType != endpoint .RecordTypeCNAME {
87+ // Check if the "resolve-target" provider-specific property is set to "true" for this endpoint.
88+ v , _ := ep .GetProviderSpecificProperty ("resolve-target" )
89+ ep .DeleteProviderSpecificProperty ("resolve-target" )
90+ if v != "true" {
9091 result = append (result , ep )
9192 continue
9293 }
@@ -106,11 +107,20 @@ func (rs *resolveTarget) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, e
106107 // All resolutions failed; skip this endpoint entirely.
107108 continue
108109 }
109- resolved := endpoint .EndpointsForHostname (ep .DNSName , ipTargets , ep .RecordTTL , ep .ProviderSpecific , ep .SetIdentifier , "" )
110- for _ , r := range resolved {
111- maps .Copy (r .Labels , ep .Labels )
110+
111+ // Group targets by record type (A vs AAAA)
112+ byType := map [string ]endpoint.Targets {}
113+ for _ , t := range ipTargets {
114+ rt := endpoint .SuitableType (t )
115+ byType [rt ] = append (byType [rt ], t )
116+ }
117+
118+ // Emit one endpoint per record type with the same DNSName and provider-specific properties.
119+ for _ , rt := range []string {endpoint .RecordTypeA , endpoint .RecordTypeAAAA } {
120+ if targets := byType [rt ]; len (targets ) > 0 {
121+ result = append (result , ep .WithTargets (targets ))
122+ }
112123 }
113- result = append (result , resolved ... )
114124 }
115125
116126 return result , nil
0 commit comments