onResponse() — netty Function Reference
Architecture documentation for the onResponse() function in DnsResolveContext.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 6b22df1c_91b5_21bf_29f9_518f692074d4["onResponse()"] 3bc002ec_f54e_a55f_0b37_77eac88c60db["DnsResolveContext"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|defined in| 3bc002ec_f54e_a55f_0b37_77eac88c60db 07f53a31_718c_c4a3_04b0_19d21f5a6af4["query()"] 07f53a31_718c_c4a3_04b0_19d21f5a6af4 -->|calls| 6b22df1c_91b5_21bf_29f9_518f692074d4 65c57ffd_71d8_8f62_ab38_e8ff772695a7["handleRedirect()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| 65c57ffd_71d8_8f62_ab38_e8ff772695a7 83b5f3ee_8078_cb8b_b707_9c1f58a2c6cb["onResponseCNAME()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| 83b5f3ee_8078_cb8b_b707_9c1f58a2c6cb e8e0f39e_4c0b_4101_2c4b_e74b1af9a114["buildAliasMap()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| e8e0f39e_4c0b_4101_2c4b_e74b1af9a114 1ff8f220_55f4_0cc5_b454_65682e36be5e["onExpectedResponse()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| 1ff8f220_55f4_0cc5_b454_65682e36be5e 07f53a31_718c_c4a3_04b0_19d21f5a6af4["query()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| 07f53a31_718c_c4a3_04b0_19d21f5a6af4 b3885856_e061_0f3a_54d9_f9abe9613324["tryToFinishResolve()"] 6b22df1c_91b5_21bf_29f9_518f692074d4 -->|calls| b3885856_e061_0f3a_54d9_f9abe9613324 style 6b22df1c_91b5_21bf_29f9_518f692074d4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java lines 610–678
private void onResponse(final DnsServerAddressStream nameServerAddrStream, final int nameServerAddrStreamIndex,
final DnsQuestion question, AddressedEnvelope<DnsResponse, InetSocketAddress> envelope,
final DnsQueryLifecycleObserver queryLifecycleObserver,
Promise<List<T>> promise) {
try {
final DnsResponse res = envelope.content();
final DnsResponseCode code = res.code();
if (code == DnsResponseCode.NOERROR) {
if (handleRedirect(question, envelope, queryLifecycleObserver, promise)) {
// Was a redirect so return here as everything else is handled in handleRedirect(...)
return;
}
final DnsRecordType type = question.type();
if (type == DnsRecordType.CNAME) {
onResponseCNAME(question, buildAliasMap(envelope.content(), cnameCache(), parent.executor()),
queryLifecycleObserver, promise);
return;
}
for (DnsRecordType expectedType : expectedTypes) {
if (type == expectedType) {
onExpectedResponse(question, envelope, queryLifecycleObserver, promise);
return;
}
}
queryLifecycleObserver.queryFailed(UNRECOGNIZED_TYPE_QUERY_FAILED_EXCEPTION);
return;
}
// Retry with the next server if the server did not tell us that the domain does not exist.
if (code != DnsResponseCode.NXDOMAIN) {
query(nameServerAddrStream, nameServerAddrStreamIndex + 1, question,
queryLifecycleObserver.queryNoAnswer(code), true, promise, cause(code));
} else {
queryLifecycleObserver.queryFailed(NXDOMAIN_QUERY_FAILED_EXCEPTION);
// Try with the next server if is not authoritative for the domain.
//
// From https://tools.ietf.org/html/rfc1035 :
//
// RCODE Response code - this 4 bit field is set as part of
// responses. The values have the following
// interpretation:
//
// ....
// ....
//
// 3 Name Error - Meaningful only for
// responses from an authoritative name
// server, this code signifies that the
// domain name referenced in the query does
// not exist.
// ....
// ....
if (!res.isAuthoritativeAnswer()) {
query(nameServerAddrStream, nameServerAddrStreamIndex + 1, question,
newDnsQueryLifecycleObserver(question), true, promise, cause(code));
} else {
// Failed with NX cause - distinction between NXDOMAIN vs a timeout
tryToFinishResolve(nameServerAddrStream, nameServerAddrStreamIndex, question,
queryLifecycleObserver, promise, NXDOMAIN_CAUSE_QUERY_FAILED_EXCEPTION);
}
}
} finally {
ReferenceCountUtil.safeRelease(envelope);
}
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does onResponse() do?
onResponse() is a function in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java.
Where is onResponse() defined?
onResponse() is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java at line 610.
What does onResponse() call?
onResponse() calls 6 function(s): buildAliasMap, handleRedirect, onExpectedResponse, onResponseCNAME, query, tryToFinishResolve.
What calls onResponse()?
onResponse() 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