@@ -349,7 +349,7 @@ func (t *ctransport) hangoverCheckpoint() {
349349 }
350350}
351351
352- func (t * ctransport ) fetch (network string , q * dns.Msg , summary * x.DNSSummary , cb * cache , key string ) (* dns.Msg , error ) {
352+ func (t * ctransport ) fetch (network string , q * dns.Msg , smmout * x.DNSSummary , cb * cache , key string ) (* dns.Msg , error ) {
353353 sendRequest := func (smm2 * x.DNSSummary ) (* dns.Msg , error ) {
354354 reqsent := false
355355
@@ -420,11 +420,11 @@ func (t *ctransport) fetch(network string, q *dns.Msg, summary *x.DNSSummary, cb
420420 trok := t .hangover .Within (httl )
421421
422422 if v , isfresh := cb .freshCopy (key ); trok && v != nil {
423- var cachedsummary * x.DNSSummary
423+ var cachedsmm * x.DNSSummary
424424 hasans := v .ans != nil
425425
426426 log .D ("cache: hit(k: %s / stale? %t / ans? %t): %s" , key , ! isfresh , hasans , v )
427- r , cachedsummary , err := asResponse (q , v , isfresh ) // return cached response, may be stale
427+ r , cachedsmm , err := asResponse (q , v , isfresh ) // return cached response, may be stale
428428 if err != nil {
429429 log .W ("cache: hit(k: %s) %s, but err? %v" , key , v , err )
430430 if err == errCacheResponseMismatch {
@@ -435,7 +435,7 @@ func (t *ctransport) fetch(network string, q *dns.Msg, summary *x.DNSSummary, cb
435435 cb .mu .Unlock ()
436436 }
437437 // fallthrough to sendRequest
438- } else if cachedsummary != nil {
438+ } else if cachedsmm != nil {
439439 if ! isfresh { // not fresh, fetch in the background
440440 testpanic := settings .PanicAtRandom .Load () && rand10pc ()
441441 g := core .Gx
@@ -446,20 +446,20 @@ func (t *ctransport) fetch(network string, q *dns.Msg, summary *x.DNSSummary, cb
446446 if testpanic {
447447 panic ("dns: cache: fetch: sendRequest: rand10pc" )
448448 }
449- _ , _ = sendRequest (copySummary (summary )) // summary may be cached
449+ _ , _ = sendRequest (copySummary (smmout )) // summary may be cached
450450 })
451451 }
452452 // change summary fields to reflect cached response, except for latency
453- fillSummary (cachedsummary , summary )
454- summary .Latency = 0 // don't use cached latency
455- summary .Cached = true
453+ fillSummary (cachedsmm , smmout )
454+ smmout .Latency = 0 // don't use cached latency
455+ smmout .Cached = true
456456 return r , nil
457457 } // else: fallthrough to sendRequest
458458 } else {
459459 log .D ("cache: miss(k: %s): cached? %t, hangover? %t, stale? %t" , key , v != nil , ! trok , ! isfresh )
460460 }
461461
462- return sendRequest (summary ) // summary is filled by underlying transport
462+ return sendRequest (smmout ) // summary is filled by underlying transport
463463}
464464
465465func (t * ctransport ) Query (network string , q * dns.Msg , smm * x.DNSSummary ) (* dns.Msg , error ) {
@@ -552,6 +552,10 @@ func fillSummary(s *x.DNSSummary, out *x.DNSSummary) {
552552 out .Server = s .Server
553553 out .PID = s .PID
554554 out .RPID = s .RPID
555+ } else if len (out .Server ) <= 0 {
556+ out .Server = s .Server
557+ out .PID = s .PID
558+ out .RPID = s .RPID
555559 }
556560 if out .Latency <= 0 {
557561 out .Latency = s .Latency
0 commit comments