@@ -113,6 +113,7 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
113113 lookupRecordTypes = append (lookupRecordTypes , dns .TypeCNAME )
114114 }
115115 for _ , lookupRecordType := range lookupRecordTypes {
116+ // Try Cardano
116117 records , err := state .GetState ().LookupRecords (
117118 []string {dns .Type (lookupRecordType ).String ()},
118119 strings .TrimSuffix (r .Question [0 ].Name , "." ),
@@ -123,6 +124,19 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
123124 )
124125 return
125126 }
127+ // Try Handshake
128+ if records == nil {
129+ records , err = state .GetState ().LookupHandshakeRecords (
130+ []string {dns .Type (lookupRecordType ).String ()},
131+ strings .TrimSuffix (r .Question [0 ].Name , "." ),
132+ )
133+ if err != nil {
134+ slog .Error (
135+ fmt .Sprintf ("failed to lookup records in state: %s" , err ),
136+ )
137+ return
138+ }
139+ }
126140 if records != nil {
127141 // Assemble response
128142 m .SetReply (r )
@@ -414,6 +428,7 @@ func findNameserversForDomain(
414428 lookupDomainName := strings .Join (queryLabels [startLabelIdx :], "." )
415429 // Convert to canonical form for consistency
416430 lookupDomainName = dns .CanonicalName (lookupDomainName )
431+ // Try Cardano
417432 nsRecords , err := state .GetState ().
418433 LookupRecords ([]string {"NS" }, lookupDomainName )
419434 if err != nil {
@@ -437,6 +452,30 @@ func findNameserversForDomain(
437452 }
438453 return dns .Fqdn (lookupDomainName ), ret , nil
439454 }
455+ // Try Handshake
456+ nsRecords , err = state .GetState ().
457+ LookupHandshakeRecords ([]string {"NS" }, lookupDomainName )
458+ if err != nil {
459+ return "" , nil , err
460+ }
461+ if len (nsRecords ) > 0 {
462+ ret := map [string ][]net.IP {}
463+ for _ , nsRecord := range nsRecords {
464+ // Get matching A/AAAA records for NS entry
465+ aRecords , err := state .GetState ().
466+ LookupHandshakeRecords ([]string {"A" , "AAAA" }, nsRecord .Rhs )
467+ if err != nil {
468+ return "" , nil , err
469+ }
470+ for _ , aRecord := range aRecords {
471+ ret [nsRecord .Rhs ] = append (
472+ ret [nsRecord .Rhs ],
473+ net .ParseIP (aRecord .Rhs ),
474+ )
475+ }
476+ }
477+ return dns .Fqdn (lookupDomainName ), ret , nil
478+ }
440479 }
441480
442481 return "" , nil , nil
0 commit comments