Home / Function/ handleRedirect() — netty Function Reference

handleRedirect() — netty Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  65c57ffd_71d8_8f62_ab38_e8ff772695a7["handleRedirect()"]
  3bc002ec_f54e_a55f_0b37_77eac88c60db["DnsResolveContext"]
  65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|defined in| 3bc002ec_f54e_a55f_0b37_77eac88c60db
  6b22df1c_91b5_21bf_29f9_518f692074d4["onResponse()"]
  6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| 65c57ffd_71d8_8f62_ab38_e8ff772695a7
  ce863271_9615_37a8_a591_eac4f9ad92d1["handleWithAdditional()"]
  65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|calls| ce863271_9615_37a8_a591_eac4f9ad92d1
  7da11410_1c67_395f_375c_64155bdbcc56["handleWithoutAdditionals()"]
  65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|calls| 7da11410_1c67_395f_375c_64155bdbcc56
  2b098af8_5694_2a00_1f74_a3149167f056["addressList()"]
  65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|calls| 2b098af8_5694_2a00_1f74_a3149167f056
  07f53a31_718c_c4a3_04b0_19d21f5a6af4["query()"]
  65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4
  8551bbf5_ceb5_b64c_f8de_aedc66ee65f3["DnsAddressStreamList()"]
  65c57ffd_71d8_8f62_ab38_e8ff772695a7 -->|calls| 8551bbf5_ceb5_b64c_f8de_aedc66ee65f3
  style 65c57ffd_71d8_8f62_ab38_e8ff772695a7 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java lines 683–726

    private boolean handleRedirect(
            DnsQuestion question, AddressedEnvelope<DnsResponse, InetSocketAddress> envelope,
            final DnsQueryLifecycleObserver queryLifecycleObserver, Promise<List<T>> promise) {
        final DnsResponse res = envelope.content();

        // Check if we have answers, if not this may be an non authority NS and so redirects must be handled.
        if (res.count(DnsSection.ANSWER) == 0) {
            AuthoritativeNameServerList serverNames = extractAuthoritativeNameServers(question.name(), res);
            if (serverNames != null) {
                int additionalCount = res.count(DnsSection.ADDITIONAL);

                AuthoritativeDnsServerCache authoritativeDnsServerCache = authoritativeDnsServerCache();
                for (int i = 0; i < additionalCount; i++) {
                    final DnsRecord r = res.recordAt(DnsSection.ADDITIONAL, i);

                    if (r.type() == DnsRecordType.A && !parent.supportsARecords() ||
                        r.type() == DnsRecordType.AAAA && !parent.supportsAAAARecords()) {
                        continue;
                    }

                    // We may have multiple ADDITIONAL entries for the same nameserver name. For example one AAAA and
                    // one A record.
                    serverNames.handleWithAdditional(parent, r, authoritativeDnsServerCache);
                }

                // Process all unresolved nameservers as well.
                serverNames.handleWithoutAdditionals(parent, resolveCache(), authoritativeDnsServerCache);

                List<InetSocketAddress> addresses = serverNames.addressList();

                // Give the user the chance to sort or filter the used servers for the query.
                DnsServerAddressStream serverStream = parent.newRedirectDnsServerStream(
                        question.name(), addresses);

                if (serverStream != null) {
                    query(serverStream, 0, question,
                          queryLifecycleObserver.queryRedirected(new DnsAddressStreamList(serverStream)),
                          true, promise, null);
                    return true;
                }
            }
        }
        return false;
    }

Subdomains

Called By

Frequently Asked Questions

What does handleRedirect() do?
handleRedirect() is a function in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java.
Where is handleRedirect() defined?
handleRedirect() is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java at line 683.
What does handleRedirect() call?
handleRedirect() calls 5 function(s): DnsAddressStreamList, addressList, handleWithAdditional, handleWithoutAdditionals, query.
What calls handleRedirect()?
handleRedirect() is called by 1 function(s): onResponse.

Analyze Your Own Codebase

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

Try Supermodel Free