netty5/resolver-dns/src/main/java/io/netty/resolver/dns
Norman Maurer 1672b6d12c
Add support for TCP fallback when we receive a truncated DnsResponse (#9139)
Motivation:

Sometimes DNS responses can be very large which mean they will not fit in a UDP packet. When this is happening the DNS server will set the TC flag (truncated flag) to tell the resolver that the response was truncated. When a truncated response was received we should allow to retry via TCP and use the received response (if possible) as a replacement for the truncated one.

See https://tools.ietf.org/html/rfc7766.

Modifications:

- Add support for TCP fallback by allow to specify a socketChannelFactory / socketChannelType on the DnsNameResolverBuilder. If this is set to something different then null we will try to fallback to TCP.
- Add decoder / encoder for TCP
- Add unit tests

Result:

Support for TCP fallback as defined by https://tools.ietf.org/html/rfc7766 when using DnsNameResolver.
2019-05-17 14:37:11 +02:00
..
AuthoritativeDnsServerCache.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
AuthoritativeDnsServerCacheAdapter.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
BiDnsQueryLifecycleObserver.java Replace DnsNameResolverContext#trace special code with an implementation of DnsQueryLifecycleObserver 2017-06-23 09:04:59 -07:00
BiDnsQueryLifecycleObserverFactory.java Replace DnsNameResolverContext#trace special code with an implementation of DnsQueryLifecycleObserver 2017-06-23 09:04:59 -07:00
Cache.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
DatagramDnsQueryContext.java Add support for TCP fallback when we receive a truncated DnsResponse (#9139) 2019-05-17 14:37:11 +02:00
DefaultAuthoritativeDnsServerCache.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
DefaultDnsCache.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
DefaultDnsCnameCache.java Add cache for CNAME mappings resolved during lookup of DNS entries. (#8314) 2018-09-27 17:05:35 +02:00
DefaultDnsServerAddresses.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
DefaultDnsServerAddressStreamProvider.java NoClassDefFoundError on Android platform when try to use DefaultDnsServerAddressStreamProvider. (#8656) 2018-12-14 21:31:21 +01:00
DirContextUtils.java NoClassDefFoundError on Android platform when try to use DefaultDnsServerAddressStreamProvider. (#8656) 2018-12-14 21:31:21 +01:00
DnsAddressDecoder.java Add DnsNameResolver.resolveAll(DnsQuestion) (#7803) 2018-03-29 22:01:25 +02:00
DnsAddressResolveContext.java DnsNameResolver.resolveAll(DnsQuestion) should not try to filter duplicates (#9141) 2019-05-13 06:59:06 +02:00
DnsAddressResolverGroup.java DnsAddressResolverGroup to use pluggable DnsNameResolverBuilder (#7793) 2018-04-26 08:04:01 +02:00
DnsCache.java Allow to detect failed query caused by an Timeout / IO error and also not cache these. 2017-11-23 10:56:41 +01:00
DnsCacheEntry.java Decouple DnsCache and DnsCacheEntry 2017-08-21 11:15:27 -07:00
DnsCnameCache.java Add cache for CNAME mappings resolved during lookup of DNS entries. (#8314) 2018-09-27 17:05:35 +02:00
DnsNameResolver.java Add support for TCP fallback when we receive a truncated DnsResponse (#9139) 2019-05-17 14:37:11 +02:00
DnsNameResolverBuilder.java Add support for TCP fallback when we receive a truncated DnsResponse (#9139) 2019-05-17 14:37:11 +02:00
DnsNameResolverException.java Allow to detect failed query caused by an Timeout / IO error and also not cache these. 2017-11-23 10:56:41 +01:00
DnsNameResolverTimeoutException.java Allow to detect failed query caused by an Timeout / IO error and also not cache these. 2017-11-23 10:56:41 +01:00
DnsQueryContext.java Add support for TCP fallback when we receive a truncated DnsResponse (#9139) 2019-05-17 14:37:11 +02:00
DnsQueryContextManager.java fix the typos 2017-04-20 04:56:09 +02:00
DnsQueryLifecycleObserver.java DNS Resolver visibility into individual queries 2017-04-27 15:17:20 -07:00
DnsQueryLifecycleObserverFactory.java DNS Resolver visibility into individual queries 2017-04-27 15:17:20 -07:00
DnsRecordResolveContext.java DnsNameResolver.resolveAll(DnsQuestion) should not try to filter duplicates (#9141) 2019-05-13 06:59:06 +02:00
DnsResolveContext.java DnsNameResolver.resolveAll(DnsQuestion) should not try to filter duplicates (#9141) 2019-05-13 06:59:06 +02:00
DnsServerAddresses.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
DnsServerAddressStream.java DNS Resolver should be more consistent with JDK resolution 2017-07-05 09:10:59 -04:00
DnsServerAddressStreamProvider.java DNS Resolve ambiguity in which DNS servers are used during resolution 2017-03-31 15:29:49 -07:00
DnsServerAddressStreamProviders.java Refresh DNS configuration each 5 minutes. (#8468) 2018-11-16 10:37:29 +01:00
InflightNameResolver.java Do not send duplicate DNS queries when the same query is in progress already 2016-05-17 15:07:36 +02:00
MultiDnsServerAddressStreamProvider.java DNS Resolve ambiguity in which DNS servers are used during resolution 2017-03-31 15:29:49 -07:00
NameServerComparator.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
NoopAuthoritativeDnsServerCache.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
NoopDnsCache.java Decouple DnsCache and DnsCacheEntry 2017-08-21 11:15:27 -07:00
NoopDnsCnameCache.java Add cache for CNAME mappings resolved during lookup of DNS entries. (#8314) 2018-09-27 17:05:35 +02:00
NoopDnsQueryLifecycleObserver.java DNS Resolver visibility into individual queries 2017-04-27 15:17:20 -07:00
NoopDnsQueryLifecycleObserverFactory.java DNS Resolver visibility into individual queries 2017-04-27 15:17:20 -07:00
package-info.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
PreferredAddressTypeComparator.java DnsNameResolver.resolveAll(...) should also contain non preferred addresses (#9044) 2019-04-15 10:19:54 +02:00
RotationalDnsServerAddresses.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
RoundRobinDnsAddressResolverGroup.java DnsAddressResolverGroup to use pluggable DnsNameResolverBuilder (#7793) 2018-04-26 08:04:01 +02:00
SequentialDnsServerAddressStream.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
SequentialDnsServerAddressStreamProvider.java DNS Resolver should be more consistent with JDK resolution 2017-07-05 09:10:59 -04:00
ShuffledDnsServerAddressStream.java Correctly handle DNS redirects for NS servers that have no ADDITIONAL record (#8177) 2018-08-22 17:49:22 +02:00
SingletonDnsServerAddresses.java DNS Resolver should be more consistent with JDK resolution 2017-07-05 09:10:59 -04:00
SingletonDnsServerAddressStreamProvider.java DNS Resolver should be more consistent with JDK resolution 2017-07-05 09:10:59 -04:00
TcpDnsQueryContext.java Add support for TCP fallback when we receive a truncated DnsResponse (#9139) 2019-05-17 14:37:11 +02:00
TraceDnsQueryLifecycleObserver.java Replace DnsNameResolverContext#trace special code with an implementation of DnsQueryLifecycleObserver 2017-06-23 09:04:59 -07:00
TraceDnsQueryLifeCycleObserverFactory.java Replace DnsNameResolverContext#trace special code with an implementation of DnsQueryLifecycleObserver 2017-06-23 09:04:59 -07:00
UniSequentialDnsServerAddressStreamProvider.java DNS Resolver should be more consistent with JDK resolution 2017-07-05 09:10:59 -04:00
UnixResolverDnsServerAddressStreamProvider.java Correctly parse /etc/resolv.conf when contain multiple entries for searchdomain. (#8351) 2018-10-12 05:00:32 +02:00