DnsNameResolverContext reuse of DnsServerAddressStream without duplicate
Motivation: DnsServerAddressStream provides an iterator like interface but maybe expected to start at a specific point upon each new usage. If a DnsServerAddressStream is re-used in multiple independent iterations the order of iteration maybe incorrect. DnsNameResolverContext has a fallback DnsServerAddressStream reference if the cache doesn't contain a hit, but it is shared across multiple independent iterations. This may lead to undesirable DNS query order. Modifications: - DnsNameResolverContext#getNameServers should duplicate the default DnsServerAddressStream Result: Consistent iteration over the default DnsServerAddressStream in DnsNameResolverContext.
This commit is contained in:
parent
3f3d309a28
commit
5257ec49ec
@ -750,7 +750,7 @@ abstract class DnsNameResolverContext<T> {
|
||||
|
||||
private DnsServerAddressStream getNameServers(String hostname) {
|
||||
DnsServerAddressStream stream = getNameServersFromCache(hostname);
|
||||
return stream == null ? nameServerAddrs : stream;
|
||||
return stream == null ? nameServerAddrs.duplicate() : stream;
|
||||
}
|
||||
|
||||
private void followCname(String cname, final DnsQueryLifecycleObserver queryLifecycleObserver, Promise<T> promise) {
|
||||
|
Loading…
Reference in New Issue
Block a user