Home / Function/ queryUnresolvedNameServer() — netty Function Reference

queryUnresolvedNameServer() — netty Function Reference

Architecture documentation for the queryUnresolvedNameServer() function in DnsResolveContext.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  804ea022_5b6c_6eb0_3048_d20c3d4093fb["queryUnresolvedNameServer()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db["DnsResolveContext"]
  804ea022_5b6c_6eb0_3048_d20c3d4093fb -->|defined in| 3bc002ec_f54e_a55f_0b37_77eac88c60db
  07f53a31_718c_c4a3_04b0_19d21f5a6af4["query()"]
  07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| 804ea022_5b6c_6eb0_3048_d20c3d4093fb
  161fe130_19c1_016b_ea22_8d91937c6452["add()"]
  804ea022_5b6c_6eb0_3048_d20c3d4093fb -->|calls| 161fe130_19c1_016b_ea22_8d91937c6452
  a7835729_7cee_bc21_d7bd_f702b4b9c74e["CombinedDnsServerAddressStream()"]
  804ea022_5b6c_6eb0_3048_d20c3d4093fb -->|calls| a7835729_7cee_bc21_d7bd_f702b4b9c74e
  07f53a31_718c_c4a3_04b0_19d21f5a6af4["query()"]
  804ea022_5b6c_6eb0_3048_d20c3d4093fb -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4
  19225515_ce5b_59bc_9042_d989b77e8911["resolve()"]
  804ea022_5b6c_6eb0_3048_d20c3d4093fb -->|calls| 19225515_ce5b_59bc_9042_d989b77e8911
  style 804ea022_5b6c_6eb0_3048_d20c3d4093fb fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java lines 523–568

    private void queryUnresolvedNameServer(final InetSocketAddress nameServerAddr,
                                           final DnsServerAddressStream nameServerAddrStream,
                                           final int nameServerAddrStreamIndex,
                                           final DnsQuestion question,
                                           final DnsQueryLifecycleObserver queryLifecycleObserver,
                                           final Promise<List<T>> promise,
                                           final Throwable cause) {
        final String nameServerName = nameServerAddr.getHostString();
        assert nameServerName != null;

        // Placeholder so we will not try to finish the original query yet.
        final Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> resolveFuture = parent.executor()
                .newSucceededFuture(null);
        queriesInProgress.add(resolveFuture);

        Promise<List<InetAddress>> resolverPromise = parent.executor().newPromise();
        resolverPromise.addListener((FutureListener<List<InetAddress>>) future -> {
            // Remove placeholder.
            queriesInProgress.remove(resolveFuture);

            if (future.isSuccess()) {
                List<InetAddress> resolvedAddresses = future.getNow();
                DnsServerAddressStream addressStream = new CombinedDnsServerAddressStream(
                        nameServerAddr, resolvedAddresses, nameServerAddrStream);
                query(addressStream, nameServerAddrStreamIndex, question,
                      queryLifecycleObserver, true, promise, cause);
            } else {
                // Ignore the server and try the next one...
                query(nameServerAddrStream, nameServerAddrStreamIndex + 1,
                      question, queryLifecycleObserver, true, promise, cause);
            }
        });
        DnsCache resolveCache = resolveCache();
        if (!DnsNameResolver.doResolveAllCached(nameServerName, additionals, resolverPromise, resolveCache,
                parent.searchDomains(), parent.ndots(), parent.resolvedInternetProtocolFamiliesUnsafe())) {

            new DnsAddressResolveContext(parent, channel,
                    originalPromise, nameServerName, additionals, parent.newNameServerAddressStream(nameServerName),
                    // Resolving the unresolved nameserver must be limited by allowedQueries
                    // so we eventually fail
                    allowedQueries,
                    resolveCache,
                    redirectAuthoritativeDnsServerCache(authoritativeDnsServerCache()), false)
                    .resolve(resolverPromise);
        }
    }

Subdomains

Called By

Frequently Asked Questions

What does queryUnresolvedNameServer() do?
queryUnresolvedNameServer() is a function in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java.
Where is queryUnresolvedNameServer() defined?
queryUnresolvedNameServer() is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java at line 523.
What does queryUnresolvedNameServer() call?
queryUnresolvedNameServer() calls 4 function(s): CombinedDnsServerAddressStream, add, query, resolve.
What calls queryUnresolvedNameServer()?
queryUnresolvedNameServer() is called by 1 function(s): query.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free