From 834d2e326cef0910b1bd62c42b95cf56b58318fc Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 12 Jul 2020 22:01:21 +0200 Subject: [PATCH] Improve resolver netenv integration From PR Review https://github.com/safing/portmaster/pull/83 --- netenv/online-status.go | 4 +--- resolver/resolve.go | 10 ++++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/netenv/online-status.go b/netenv/online-status.go index 62b75f6c..014efc8f 100644 --- a/netenv/online-status.go +++ b/netenv/online-status.go @@ -106,8 +106,6 @@ var ( captivePortalURL string captivePortalLock sync.Mutex - - waitForever = make(chan time.Time) ) func init() { @@ -234,7 +232,7 @@ func getDynamicStatusTrigger() <-chan time.Time { case StatusSemiOnline: return time.After(5 * time.Minute) case StatusOnline: - return waitForever + return nil default: // unknown status return time.After(5 * time.Minute) } diff --git a/resolver/resolve.go b/resolver/resolve.go index 5b0ac937..f6f62ca2 100644 --- a/resolver/resolve.go +++ b/resolver/resolve.go @@ -228,13 +228,12 @@ func resolveAndCache(ctx context.Context, q *Query) (rrCache *RRCache, err error // check if we are online if netenv.GetOnlineStatus() == netenv.StatusOffline { - if netenv.IsOnlineStatusTestDomain(q.FQDN) { - log.Tracer(ctx).Debugf("resolver: permitting online status test domain %s to resolve even though offline", q.FQDN) - } else { + if !netenv.IsOnlineStatusTestDomain(q.FQDN) { log.Tracer(ctx).Debugf("resolver: not resolving %s, device is offline", q.FQDN) // we are offline and this is not an online check query return nil, ErrOffline } + log.Tracer(ctx).Debugf("resolver: permitting online status test domain %s to resolve even though offline", q.FQDN) } // start resolving @@ -253,9 +252,6 @@ resolveLoop: // resolve rrCache, err = resolver.Conn.Query(ctx, q) if err != nil { - - // TODO: check if we are online? - switch { case errors.Is(err, ErrNotFound): // NXDomain, or similar @@ -268,6 +264,8 @@ resolveLoop: log.Tracer(ctx).Debugf("resolver: not resolving %s, device is offline", q.FQDN) // we are offline and this is not an online check query return nil, ErrOffline + default: + log.Tracer(ctx).Debugf("resolver: failed to resolve %s: %s", q.FQDN, err) } } else { // no error