Class DnsResolveContext<T>
java.lang.Object
io.netty.resolver.dns.DnsResolveContext<T>
- Direct Known Subclasses:
DnsAddressResolveContext, DnsRecordResolveContext
abstract class DnsResolveContext<T>
extends java.lang.Object
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final classprivate static final classHolds the closed DNS Servers for a domain.private final classprivate static final class(package private) static final classprivate static final classprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescription(package private) final DnsRecord[]private intprivate final Channelprivate static final java.lang.RuntimeExceptionprivate booleanprivate final intprivate final DnsRecordType[]private java.util.List<T> private final java.lang.Stringprivate static final InternalLoggerprivate static final java.lang.RuntimeExceptionprivate final DnsServerAddressStreamprivate static final java.lang.RuntimeExceptionprivate static final java.lang.RuntimeExceptionprivate static final java.lang.RuntimeExceptionprivate final Promise<?> (package private) final DnsNameResolverprivate static final java.lang.Stringprivate final java.util.Set<Future<AddressedEnvelope<DnsResponse, java.net.InetSocketAddress>>> private static final java.lang.RuntimeExceptionprivate boolean(package private) static booleanprivate static final java.lang.RuntimeException -
Constructor Summary
ConstructorsConstructorDescriptionDnsResolveContext(DnsNameResolver parent, Channel channel, Promise<?> originalPromise, java.lang.String hostname, int dnsClass, DnsRecordType[] expectedTypes, DnsRecord[] additionals, DnsServerAddressStream nameServerAddrs, int allowedQueries) -
Method Summary
Modifier and TypeMethodDescription(package private) AuthoritativeDnsServerCacheTheAuthoritativeDnsServerCacheto use while resolving.private static java.util.Map<java.lang.String, java.lang.String> buildAliasMap(java.lang.String queryName, DnsResponse response, DnsCnameCache cache, EventLoop loop) (package private) abstract voidCaches a successful resolution.(package private) abstract voidCaches a failed resolution.private static java.lang.Throwablecause(DnsResponseCode code) (package private) Channelchannel()TheChannelused.private static voidcheckCnameLoop(java.lang.String hostname, java.lang.String first, java.lang.String second) (package private) DnsCnameCacheTheDnsCnameCachethat is used for resolving.(package private) static java.lang.StringcnameResolveFromCache(DnsCnameCache cnameCache, java.lang.String name) private static java.lang.StringcnameResolveFromCacheLoop(DnsCnameCache cnameCache, java.lang.String hostname, java.lang.String first, java.lang.String mapping) (package private) abstract TconvertRecord(DnsRecord record, java.lang.String hostname, DnsRecord[] additionals, EventLoop eventLoop) Converts the givenDnsRecordintoT.(package private) static java.lang.String(package private) voiddoSearchDomainQuery(java.lang.String hostname, Promise<java.util.List<T>> nextPromise) private static DnsResolveContext.AuthoritativeNameServerListextractAuthoritativeNameServers(java.lang.String questionName, DnsResponse res) Returns the invalid input: '{@code {@link AuthoritativeNameServerList} which were included in {@link DnsSection#AUTHORITY} or {@code null} if non are found.'(package private) abstract java.util.List<T> filterResults(java.util.List<T> unfiltered) Returns a filtered list of results which should be the final result of DNS resolution.private voidfinishResolve(Promise<java.util.List<T>> promise, java.lang.Throwable cause) private voidfollowCname(DnsQuestion question, java.lang.String cname, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) private DnsServerAddressStreamgetNameServers(java.lang.String name) private DnsServerAddressStreamgetNameServersFromCache(java.lang.String hostname) Returns theDnsServerAddressStreamthat was cached for the given hostname ornullif non could be found.private booleanhandleRedirect(DnsQuestion question, AddressedEnvelope<DnsResponse, java.net.InetSocketAddress> envelope, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) Handles a redirect answer if needed and returnstrueif a redirect query has been made.private booleanhasNDots()private static java.lang.StringhostnameWithDot(java.lang.String name) private voidinternalResolve(java.lang.String name, Promise<java.util.List<T>> promise) (package private) abstract booleanisCompleteEarly(T resolved) (package private) abstract booleanReturnstrueif we should allow duplicates in the result orfalseif no duplicates should be included.private DnsQueryLifecycleObservernewDnsQueryLifecycleObserver(DnsQuestion question) (package private) abstract DnsResolveContext<T> newResolverContext(DnsNameResolver parent, Channel channel, Promise<?> originalPromise, java.lang.String hostname, int dnsClass, DnsRecordType[] expectedTypes, DnsRecord[] additionals, DnsServerAddressStream nameServerAddrs, int allowedQueries) Creates a new context with the given parameters.private voidonExpectedResponse(DnsQuestion question, AddressedEnvelope<DnsResponse, java.net.InetSocketAddress> envelope, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) private voidonResponse(DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, AddressedEnvelope<DnsResponse, java.net.InetSocketAddress> envelope, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) private voidonResponseCNAME(DnsQuestion question, java.util.Map<java.lang.String, java.lang.String> cnames, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) private voidquery(DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, DnsQueryLifecycleObserver queryLifecycleObserver, boolean flush, Promise<java.util.List<T>> promise, java.lang.Throwable cause) private booleanquery(java.lang.String hostname, DnsRecordType type, DnsServerAddressStream dnsServerAddressStream, boolean flush, Promise<java.util.List<T>> promise) private voidqueryUnresolvedNameServer(java.net.InetSocketAddress nameServerAddr, DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise, java.lang.Throwable cause) private static AuthoritativeDnsServerCacheredirectAuthoritativeDnsServerCache(AuthoritativeDnsServerCache authoritativeDnsServerCache) (package private) void(package private) DnsCacheTheDnsCacheto use while resolving.private voidtryToFinishResolve(DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise, java.lang.Throwable cause) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
logger
-
PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS
private static final java.lang.String PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS- See Also:
-
TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS
static boolean TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS -
NXDOMAIN_QUERY_FAILED_EXCEPTION
private static final java.lang.RuntimeException NXDOMAIN_QUERY_FAILED_EXCEPTION -
CNAME_NOT_FOUND_QUERY_FAILED_EXCEPTION
private static final java.lang.RuntimeException CNAME_NOT_FOUND_QUERY_FAILED_EXCEPTION -
NO_MATCHING_RECORD_QUERY_FAILED_EXCEPTION
private static final java.lang.RuntimeException NO_MATCHING_RECORD_QUERY_FAILED_EXCEPTION -
UNRECOGNIZED_TYPE_QUERY_FAILED_EXCEPTION
private static final java.lang.RuntimeException UNRECOGNIZED_TYPE_QUERY_FAILED_EXCEPTION -
NAME_SERVERS_EXHAUSTED_EXCEPTION
private static final java.lang.RuntimeException NAME_SERVERS_EXHAUSTED_EXCEPTION -
SERVFAIL_QUERY_FAILED_EXCEPTION
private static final java.lang.RuntimeException SERVFAIL_QUERY_FAILED_EXCEPTION -
NXDOMAIN_CAUSE_QUERY_FAILED_EXCEPTION
private static final java.lang.RuntimeException NXDOMAIN_CAUSE_QUERY_FAILED_EXCEPTION -
parent
-
channel
-
originalPromise
-
nameServerAddrs
-
hostname
private final java.lang.String hostname -
dnsClass
private final int dnsClass -
expectedTypes
-
additionals
-
queriesInProgress
private final java.util.Set<Future<AddressedEnvelope<DnsResponse, java.net.InetSocketAddress>>> queriesInProgress -
finalResult
-
allowedQueries
private int allowedQueries -
triedCNAME
private boolean triedCNAME -
completeEarly
private boolean completeEarly
-
-
Constructor Details
-
DnsResolveContext
DnsResolveContext(DnsNameResolver parent, Channel channel, Promise<?> originalPromise, java.lang.String hostname, int dnsClass, DnsRecordType[] expectedTypes, DnsRecord[] additionals, DnsServerAddressStream nameServerAddrs, int allowedQueries)
-
-
Method Details
-
channel
-
resolveCache
-
cnameCache
DnsCnameCache cnameCache()TheDnsCnameCachethat is used for resolving. -
authoritativeDnsServerCache
AuthoritativeDnsServerCache authoritativeDnsServerCache()TheAuthoritativeDnsServerCacheto use while resolving. -
newResolverContext
abstract DnsResolveContext<T> newResolverContext(DnsNameResolver parent, Channel channel, Promise<?> originalPromise, java.lang.String hostname, int dnsClass, DnsRecordType[] expectedTypes, DnsRecord[] additionals, DnsServerAddressStream nameServerAddrs, int allowedQueries) Creates a new context with the given parameters. -
convertRecord
-
filterResults
Returns a filtered list of results which should be the final result of DNS resolution. This must take into account JDK semantics such asNetUtil.isIpV6AddressesPreferred(). -
isCompleteEarly
-
isDuplicateAllowed
abstract boolean isDuplicateAllowed()Returnstrueif we should allow duplicates in the result orfalseif no duplicates should be included. -
cache
-
cache
abstract void cache(java.lang.String hostname, DnsRecord[] additionals, java.net.UnknownHostException cause) Caches a failed resolution. -
resolve
-
hasNDots
private boolean hasNDots() -
doSearchDomainQuery
-
hostnameWithDot
private static java.lang.String hostnameWithDot(java.lang.String name) -
cnameResolveFromCache
static java.lang.String cnameResolveFromCache(DnsCnameCache cnameCache, java.lang.String name) throws java.net.UnknownHostException - Throws:
java.net.UnknownHostException
-
cnameResolveFromCacheLoop
private static java.lang.String cnameResolveFromCacheLoop(DnsCnameCache cnameCache, java.lang.String hostname, java.lang.String first, java.lang.String mapping) throws java.net.UnknownHostException - Throws:
java.net.UnknownHostException
-
checkCnameLoop
private static void checkCnameLoop(java.lang.String hostname, java.lang.String first, java.lang.String second) throws java.net.UnknownHostException - Throws:
java.net.UnknownHostException
-
internalResolve
-
getNameServersFromCache
Returns theDnsServerAddressStreamthat was cached for the given hostname ornullif non could be found. -
query
private void query(DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, DnsQueryLifecycleObserver queryLifecycleObserver, boolean flush, Promise<java.util.List<T>> promise, java.lang.Throwable cause) -
queryUnresolvedNameServer
private void queryUnresolvedNameServer(java.net.InetSocketAddress nameServerAddr, DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise, java.lang.Throwable cause) -
redirectAuthoritativeDnsServerCache
private static AuthoritativeDnsServerCache redirectAuthoritativeDnsServerCache(AuthoritativeDnsServerCache authoritativeDnsServerCache) -
onResponse
private void onResponse(DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, AddressedEnvelope<DnsResponse, java.net.InetSocketAddress> envelope, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) -
handleRedirect
private boolean handleRedirect(DnsQuestion question, AddressedEnvelope<DnsResponse, java.net.InetSocketAddress> envelope, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) Handles a redirect answer if needed and returnstrueif a redirect query has been made. -
cause
-
extractAuthoritativeNameServers
private static DnsResolveContext.AuthoritativeNameServerList extractAuthoritativeNameServers(java.lang.String questionName, DnsResponse res) Returns the invalid input: '{@code {@link AuthoritativeNameServerList} which were included in {@link DnsSection#AUTHORITY} or {@code null} if non are found.' -
onExpectedResponse
private void onExpectedResponse(DnsQuestion question, AddressedEnvelope<DnsResponse, java.net.InetSocketAddress> envelope, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) -
onResponseCNAME
private void onResponseCNAME(DnsQuestion question, java.util.Map<java.lang.String, java.lang.String> cnames, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) -
buildAliasMap
private static java.util.Map<java.lang.String, java.lang.String> buildAliasMap(java.lang.String queryName, DnsResponse response, DnsCnameCache cache, EventLoop loop) -
tryToFinishResolve
private void tryToFinishResolve(DnsServerAddressStream nameServerAddrStream, int nameServerAddrStreamIndex, DnsQuestion question, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise, java.lang.Throwable cause) -
finishResolve
-
decodeDomainName
-
getNameServers
-
followCname
private void followCname(DnsQuestion question, java.lang.String cname, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<java.util.List<T>> promise) -
query
private boolean query(java.lang.String hostname, DnsRecordType type, DnsServerAddressStream dnsServerAddressStream, boolean flush, Promise<java.util.List<T>> promise) -
newDnsQueryLifecycleObserver
-