Change counterintuitive implementation of “Fastest IP address“ in case of non-A/AAAA response types
TomTonic opened this issue · 1 comments
Current behavior:
The switch “Fastest IP address“ makes AdGuard query all configured upstreams. Then…
- if the upstreams return an A or AAAA record type, then AdGuard measures the time to open up a TCP connection to ports 80 and 443 of all returned IP addresses of all configured upstreams. AdGuard then return a manipulated DNS record, that only contains the fastest IP address.
- else (i.e. the upstreams return a different record type) AdGuard enters the normal “load-balancing“ mode. (see
Line 28 in a87a3df
Suggested behavior:
If the upstreams return a different record type than A or AAAA, then AdGuard enters the normal “Parallel requests“ mode, i.e. change line 28 to “return upstream.ExchangeParallel(ups, req)“ (like in
Line 22 in a87a3df
Rationale:
As a user of “Fastest IP address“ I have to accept that generally all upstreams are queried in order to get the best overall system performance. In the case of A/AAAA records that is the fastest content server (not the fastest DNS answer). In case of other record types, that would be the fastest DNS answer, in my opinion.