From e4feabdf86b5eef7d98e9de0270d289de0cddf89 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Fri, 10 Jan 2020 18:08:26 +0100 Subject: Load initial hosts in separate goroutine --- server.go | 6 +++--- server_test.go | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/server.go b/server.go index 25c48ef..79a2447 100644 --- a/server.go +++ b/server.go @@ -48,12 +48,12 @@ func NewServer(logger *log.Logger, proxy *dns.Proxy, config Config) (*Server, er proxy.Handler = server.hijack // Periodically refresh hosts - if t := config.DNS.refreshInterval; t > 0 { - go server.reloadHosts(config.DNS.refreshInterval) + if interval := config.DNS.refreshInterval; interval > 0 { + go server.reloadHosts(interval) } // Load initial hosts - server.loadHosts() + go server.loadHosts() return server, nil } diff --git a/server_test.go b/server_test.go index 9b0aaf0..6aa16ad 100644 --- a/server_test.go +++ b/server_test.go @@ -109,6 +109,13 @@ func testServer(t *testing.T, refreshInterval time.Duration) (*Server, func()) { defer cleanup() t.Fatal(err) } + ts := time.Now() + for srv.hosts == nil { + time.Sleep(10 * time.Millisecond) + if time.Since(ts) > 2*time.Second { + t.Fatal("timed out waiting initial hosts to load") + } + } return srv, cleanup } -- cgit v1.2.3