Commit 5a8a1253 authored by Miek Gieben's avatar Miek Gieben

Failed startup was not flagged (#118)

The error propagation from srv.ListenAndServe did not work as intended,
simplified it a bit and added a test for it.
parent c3f8bb37
......@@ -163,8 +163,8 @@ func (s *Server) Serve(ln ListenerFile) error {
// ListenAndServe starts the server with a new listener. It blocks until the server stops.
func (s *Server) ListenAndServe() error {
err := s.setup()
defer close(s.startChan)
if err != nil {
close(s.startChan)
return err
}
......@@ -187,8 +187,6 @@ func (s *Server) ListenAndServe() error {
go func() {
s.server[0].ActivateAndServe()
}()
close(s.startChan) // unblock anyone waiting for this to start listening
return s.server[1].ActivateAndServe()
}
......
package test
import (
"testing"
"github.com/miekg/coredns/core"
)
// Bind to low port should fail.
func TestFailStartServer(t *testing.T) {
corefile := `.:53 {
chaos CoreDNS-001 miek@miek.nl
}
`
srv, _ := core.TestServer(t, corefile)
err := srv.ListenAndServe()
if err == nil {
srv.Stop()
t.Fatalf("Low port startup should fail")
}
}
......@@ -34,7 +34,7 @@ func Server(t *testing.T, corefile string) (*server.Server, string, string, erro
}
go srv.ListenAndServe()
time.Sleep(1 * time.Second)
time.Sleep(1 * time.Second) // yeah... I regret nothing
tcp, udp := srv.LocalAddr()
return srv, tcp.String(), udp.String(), nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment