diff --git a/nameserver/server.go b/nameserver/server.go index 336b863f..a7b84bc7 100644 --- a/nameserver/server.go +++ b/nameserver/server.go @@ -218,7 +218,10 @@ func (s *DNSServer) Start() error { s.tcpSrv = &dns.Server{Listener: l, Handler: s.createMux(protTCP), ReadTimeout: s.readTimeout} s.listenersWg.Add(2) + return nil +} +func (s *DNSServer) ActivateAndServe() { go func() { defer s.listenersWg.Done() @@ -241,7 +244,6 @@ func (s *DNSServer) Start() error { s.listenersWg.Wait() Info.Printf("[dns] Server exiting...") - return nil } // Return status string diff --git a/nameserver/server_cache_test.go b/nameserver/server_cache_test.go index 5b366928..65f233df 100644 --- a/nameserver/server_cache_test.go +++ b/nameserver/server_cache_test.go @@ -69,7 +69,9 @@ func TestServerDbCacheInvalidation(t *testing.T) { MaxAnswers: 4, }) wt.AssertNoErr(t, err) - go srv.Start() + err = srv.Start() + wt.AssertNoErr(t, err) + go srv.ActivateAndServe() defer srv.Stop() time.Sleep(100 * time.Millisecond) // Allow server goroutine to start @@ -202,7 +204,9 @@ func TestServerCacheExpiration(t *testing.T) { CacheNegLocalTTL: negativeLocalTTL, }) wt.AssertNoErr(t, err) - go srv.Start() + err = srv.Start() + wt.AssertNoErr(t, err) + go srv.ActivateAndServe() defer srv.Stop() time.Sleep(100 * time.Millisecond) // Allow server goroutine to start @@ -287,7 +291,9 @@ func TestServerCacheRefresh(t *testing.T) { MaxAnswers: 4, }) wt.AssertNoErr(t, err) - go srv.Start() + err = srv.Start() + wt.AssertNoErr(t, err) + go srv.ActivateAndServe() defer srv.Stop() time.Sleep(100 * time.Millisecond) // Allow sever goroutine to start diff --git a/nameserver/server_test.go b/nameserver/server_test.go index 360222f4..feba9997 100644 --- a/nameserver/server_test.go +++ b/nameserver/server_test.go @@ -89,7 +89,9 @@ func TestUDPDNSServer(t *testing.T) { ListenReadTimeout: testSocketTimeout, }) wt.AssertNoErr(t, err) - go srv.Start() + err = srv.Start() + wt.AssertNoErr(t, err) + go srv.ActivateAndServe() defer srv.Stop() time.Sleep(100 * time.Millisecond) // Allow sever goroutine to start @@ -195,7 +197,9 @@ func TestTCPDNSServer(t *testing.T) { ListenReadTimeout: testSocketTimeout, }) wt.AssertNoErr(t, err) - go srv.Start() + err = srv.Start() + wt.AssertNoErr(t, err) + go srv.ActivateAndServe() defer srv.Stop() time.Sleep(100 * time.Millisecond) // Allow sever goroutine to start diff --git a/prog/weavedns/main.go b/prog/weavedns/main.go index f22ef8e5..21193da6 100644 --- a/prog/weavedns/main.go +++ b/prog/weavedns/main.go @@ -182,4 +182,5 @@ func main() { if err != nil { Error.Fatal("[main] Failed to start the WeaveDNS server: ", err) } + srv.ActivateAndServe() }