Skip to content

Commit 906193a

Browse files
committed
dnsx/plus: use errored transports iff post-filter count is low
1 parent 4d72198 commit 906193a

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

intra/dnsx/plus.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,12 @@ func (t *plus) ordered() ([]Transport, error) {
168168
ord = append(ord, recov...)
169169

170170
ord = core.CopyUniq(ord)
171-
if len(ord) < plusMaxTries {
172-
ord = core.CopyUniq(ord, errored)
173-
}
174171

175172
prev := ord
176173
strat := settings.PlusStrat.Load()
174+
175+
refiltered := false
176+
refilter:
177177
switch strat {
178178
case settings.PlusFilterSafest:
179179
ord = core.FilterLeft(ord, IsEncrypted)
@@ -185,6 +185,12 @@ func (t *plus) ordered() ([]Transport, error) {
185185
// nothing to do
186186
}
187187

188+
if !refiltered && len(ord) < plusMaxTries {
189+
ord = core.CopyUniq(ord, errored)
190+
refiltered = true
191+
goto refilter
192+
}
193+
188194
if len(ord) <= 0 {
189195
log.W("plus: strat %d: zero transports avail [exp: %d]: sys? %s / pref: %s / errored: %v / ended: %v",
190196
strat, expected, idstr(sys), infcsv(preferred...), infcsv(errored...), infcsv(ended...))

0 commit comments

Comments
 (0)