Skip to content

Commit c5374c8

Browse files
committed
plus: m err log
1 parent db01ba8 commit c5374c8

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

intra/dnsx/plus.go

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -179,17 +179,27 @@ func (t *plus) Query(network string, q *dns.Msg, smm *x.DNSSummary) (ans *dns.Ms
179179
return t.forward(network, q, smm, ord...)
180180
}
181181

182-
func (t *plus) forward(network string, q *dns.Msg, smm *x.DNSSummary, all ...Transport) (*dns.Msg, error) {
183-
var errs []error
182+
func (t *plus) forward(network string, q *dns.Msg, outSmm *x.DNSSummary, all ...Transport) (*dns.Msg, error) {
183+
var errs error
184+
qname := qname(q)
185+
qtyp := qtype(q)
184186
tries := plusMaxTries
185187
visited := make(map[string]struct{}, len(all))
188+
var curSmm *x.DNSSummary
189+
190+
defer func() {
191+
fillSummary(curSmm, outSmm)
192+
}()
193+
186194
for _, tr := range all {
195+
curSmm = new(x.DNSSummary)
196+
187197
if len(visited) > tries {
188198
break
189199
}
190200

191201
if tr == nil { // unlikely
192-
errs = append(errs, errNoSuchTransport)
202+
errs = core.JoinErr(errs, errNoSuchTransport)
193203
continue
194204
}
195205

@@ -202,19 +212,26 @@ func (t *plus) forward(network string, q *dns.Msg, smm *x.DNSSummary, all ...Tra
202212
}
203213
visited[id] = struct{}{}
204214

205-
ans, err := tr.Query(network, q, smm)
215+
ans, err := tr.Query(network, q, curSmm)
216+
217+
failed := xdns.IsServFailOrInvalid(ans)
218+
noans := !failed && !xdns.HasAnyAnswer(ans)
219+
220+
loged(err != nil || failed || noans)("plus: queried %s for %s:%d; data: %s, code: %d, err? %v",
221+
idstr(tr), qname, qtyp, curSmm.RData, curSmm.RCode, err)
222+
206223
if err != nil {
207-
errs = append(errs, err)
224+
errs = core.JoinErr(errs, err)
208225
continue
209226
}
210-
if xdns.IsServFailOrInvalid(ans) {
211-
errs = append(errs, errServFail)
227+
if failed {
228+
errs = core.JoinErr(errs, errServFail)
212229
continue
213230
}
214-
if !xdns.HasAnyAnswer(ans) {
215-
errs = append(errs, errNoAnswer)
231+
if noans {
232+
errs = core.JoinErr(errs, errNoAnswer)
216233
// wind down faster if multiple transports return no answer
217-
if len(visited) >= tries/2 {
234+
if len(visited) > tries/2 {
218235
return ans, nil
219236
}
220237
continue
@@ -225,7 +242,7 @@ func (t *plus) forward(network string, q *dns.Msg, smm *x.DNSSummary, all ...Tra
225242
}
226243

227244
log.W("plus: [exp: %d / tried: %d]: all transports failed: %v", len(all), len(visited), errs)
228-
return nil, core.UniqErr(errs...)
245+
return nil, errs
229246
}
230247

231248
func (t *plus) P50() int64 {
@@ -339,3 +356,10 @@ func (t *plus) LiveTransports() string {
339356

340357
return strings.Join(ids, ",")
341358
}
359+
360+
func loged(cond bool) log.LogFn {
361+
if cond {
362+
return log.E
363+
}
364+
return log.D
365+
}

0 commit comments

Comments
 (0)