aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-01-10 18:08:26 +0100
committerMartin Polden <mpolden@mpolden.no>2020-01-11 12:25:42 +0100
commite4feabdf86b5eef7d98e9de0270d289de0cddf89 (patch)
tree000b5d105fa8e843899147d66fda2e39f9f6a1aa
parent8dbb711a339daa20681082bf091c8c257ac237bb (diff)
Load initial hosts in separate goroutine
-rw-r--r--server.go6
-rw-r--r--server_test.go7
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
}