@@ -261,12 +261,16 @@ func (t *dnsgateway) q(t1, t2 Transport, preset []*netip.Addr, network string, q
261
261
262
262
if err != nil {
263
263
if ansin == nil {
264
- log .D ("alg: abort; r: 0, qerr %v" , err )
264
+ log .I ("alg: abort; r: 0, qerr %v" , err )
265
265
return nil , err
266
266
}
267
267
log .D ("alg: err but r ok; ans: %d, qerr %v" , xdns .Len (ansin ), err )
268
268
}
269
269
270
+ if ansin == nil { // may be nil on errors
271
+ return nil , err
272
+ }
273
+
270
274
qname , _ := xdns .NormalizeQName (xdns .QName (ansin ))
271
275
272
276
summary .QName = qname
@@ -281,9 +285,13 @@ func (t *dnsgateway) q(t1, t2 Transport, preset []*netip.Addr, network string, q
281
285
summary .UpstreamBlocks = true
282
286
}
283
287
288
+ log .D ("alg: q(%s) ans(%d) hasaaaq(%t) hasans(%t) rgood(%t) ans0000(%t)" , qname , xdns .Ans (ansin ), hasaaaaq , hasans , rgood , ans0000 )
289
+
284
290
if ! hasans && hasaaaaq && ! ans0000 { // synth aaaa from a, if needed
285
- ans64 := t .dns64 .D64 (network , ansin , t1 ) // d64 is disabled by default
286
- if rgood = xdns .HasRcodeSuccess (ans64 ); rgood { // reaffirm rgood
291
+ ans64 := t .dns64 .D64 (network , ansin , t1 ) // d64 is disabled by default
292
+ rgood = xdns .HasRcodeSuccess (ans64 )
293
+ log .D ("alg: d64: q(%s) ans64(%d) rgood64(%t)" , qname , xdns .Len (ans64 ), rgood )
294
+ if rgood { // reaffirm rgood
287
295
ansin = ans64
288
296
withDNS64Summary (ans64 , summary )
289
297
} // else: ans64 is nil on no D64 or error
@@ -324,10 +332,10 @@ func (t *dnsgateway) q(t1, t2 Transport, preset []*netip.Addr, network string, q
324
332
t .Lock ()
325
333
defer t .Unlock ()
326
334
327
- algip4hints := []* netip.Addr {}
328
- algip6hints := []* netip.Addr {}
329
- algip4s := []* netip.Addr {}
330
- algip6s := []* netip.Addr {}
335
+ algip4hints := make ( []* netip.Addr , 0 , len ( ip4hints ))
336
+ algip6hints := make ( []* netip.Addr , 0 , len ( ip6hints ))
337
+ algip4s := make ( []* netip.Addr , 0 , len ( a4 ))
338
+ algip6s := make ( []* netip.Addr , 0 , len ( a6 ))
331
339
for i , ip4 := range ip4hints {
332
340
realip = append (realip , ip4 )
333
341
// 0th algip is reserved for A records
0 commit comments