Pull request: 3142 swap arp and rdns priority

Merge in DNS/adguard-home from 3142-fix-clients to master

Updates #3142.
Updates #3597.

Squashed commit of the following:

commit 4dcabedbfb1a4e4a0aaba588f708e4625442fce8
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Mar 22 15:13:15 2022 +0300

    all: imp log of changes

commit 481088d05eecac1109daf378e0b4d5f6b2cf099b
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Tue Mar 22 14:36:44 2022 +0300

    all: swap arp and rdns priority
This commit is contained in:
Eugene Burkov 2022-03-22 15:21:03 +03:00
parent b9790f663a
commit f8e45c13f3
4 changed files with 10 additions and 10 deletions

View File

@ -29,6 +29,8 @@ and this project adheres to
### Changed ### Changed
- Reverse DNS now has a greater priority as the source of runtime clients'
informmation than ARP neighborhood.
- Improved detection of runtime clients through more resilient ARP processing - Improved detection of runtime clients through more resilient ARP processing
([#3597]). ([#3597]).
- The TTL of responses served from the optimistic cache is now lowered to 10 - The TTL of responses served from the optimistic cache is now lowered to 10

View File

@ -314,7 +314,7 @@ func (s *Server) Exchange(ip net.IP) (host string, err error) {
StartTime: time.Now(), StartTime: time.Now(),
} }
resolver := s.internalProxy var resolver *proxy.Proxy
if s.privateNets.Contains(ip) { if s.privateNets.Contains(ip) {
if !s.conf.UsePrivateRDNS { if !s.conf.UsePrivateRDNS {
return "", nil return "", nil
@ -322,6 +322,8 @@ func (s *Server) Exchange(ip net.IP) (host string, err error) {
resolver = s.localResolvers resolver = s.localResolvers
s.recDetector.add(*req) s.recDetector.add(*req)
} else {
resolver = s.internalProxy
} }
if err = resolver.Resolve(ctx); err != nil { if err = resolver.Resolve(ctx); err != nil {

View File

@ -53,8 +53,8 @@ type clientSource uint
// Client sources. The order determines the priority. // Client sources. The order determines the priority.
const ( const (
ClientSourceWHOIS clientSource = iota ClientSourceWHOIS clientSource = iota
ClientSourceRDNS
ClientSourceARP ClientSourceARP
ClientSourceRDNS
ClientSourceDHCP ClientSourceDHCP
ClientSourceHostsFile ClientSourceHostsFile
) )
@ -723,9 +723,7 @@ func (clients *clientsContainer) AddHost(ip net.IP, host string, src clientSourc
clients.lock.Lock() clients.lock.Lock()
defer clients.lock.Unlock() defer clients.lock.Unlock()
ok = clients.addHostLocked(ip, host, src) return clients.addHostLocked(ip, host, src), nil
return ok, nil
} }
// addHostLocked adds a new IP-hostname pairing. For internal use only. // addHostLocked adds a new IP-hostname pairing. For internal use only.

View File

@ -125,14 +125,12 @@ func (r *RDNS) workerLoop() {
log.Debug("rdns: resolving %q: %s", ip, err) log.Debug("rdns: resolving %q: %s", ip, err)
continue continue
} } else if host == "" {
if host == "" {
continue continue
} }
// Don't handle any errors since AddHost doesn't return non-nil // Don't handle any errors since AddHost doesn't return non-nil errors
// errors for now. // for now.
_, _ = r.clients.AddHost(ip, host, ClientSourceRDNS) _, _ = r.clients.AddHost(ip, host, ClientSourceRDNS)
} }
} }