From c58b2a58cb95a2ffbc800981e39d85b863156b02 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Thu, 7 May 2020 15:04:39 +0800 Subject: [PATCH] Revert "Fix bugs in #235" This reverts commit 1aa8a0cb57e5e7e05da65eafef795da1c215d1e9. --- src/acl/mod.rs | 4 ++-- src/context.rs | 23 +++++++++-------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/acl/mod.rs b/src/acl/mod.rs index 497eb38a..14df5f90 100644 --- a/src/acl/mod.rs +++ b/src/acl/mod.rs @@ -282,8 +282,8 @@ impl AccessControl { pub fn check_ip_in_proxy_list(&self, ip: &IpAddr) -> bool { match self.mode { - Mode::BlackList => !self.black_list.check_ip_matched(ip), - Mode::WhiteList => self.white_list.check_ip_matched(ip), + Mode::BlackList => self.black_list.check_ip_matched(ip), + Mode::WhiteList => !self.white_list.check_ip_matched(ip), } } diff --git a/src/context.rs b/src/context.rs index 13a5768b..cb86c2ad 100644 --- a/src/context.rs +++ b/src/context.rs @@ -291,6 +291,9 @@ impl Context { /// Add a record to the reverse lookup cache #[cfg(feature = "local-dns-relay")] pub fn add_to_reverse_lookup_cache(&self, addr: &IpAddr, forward: bool) { + if self.check_ip_in_proxy_list(addr) == forward { + return; + } let mut reverse_lookup_cache = self.reverse_lookup_cache.lock(); reverse_lookup_cache.insert(addr.clone(), forward); } @@ -311,21 +314,13 @@ impl Context { // Proxy everything by default None => true, Some(ref a) => { - // first check the IP list - if a.check_ip_in_proxy_list(ip) { - true + // do the reverse lookup in our local cache + let mut reverse_lookup_cache = self.reverse_lookup_cache.lock(); + // if a qname is found + if let Some(forward) = reverse_lookup_cache.get(ip) { + !*forward } else { - // do the reverse lookup in our local cache - let mut reverse_lookup_cache = self.reverse_lookup_cache.lock(); - // if a qname is found - if let Some(forward) = reverse_lookup_cache.get(ip) { - // if qname is resolved by remote, - // we should proxy it as well - *forward - } else { - // by default not proxied - false - } + a.check_ip_in_proxy_list(ip) } } }