diff --git a/goatherd.go b/goatherd.go
index f75d3d839208ac8ab1a74017ba934b8ea4ad5f44..172013375067fca7ec30445c980cad1f2240caf8 100644
--- a/goatherd.go
+++ b/goatherd.go
@@ -544,22 +544,19 @@ func serve() {
 
 	for addr, tlsCfg := range cfg.Listen {
 		var listener net.Listener
-		listenAddr, err := net.ResolveTCPAddr("tcp", addr)
-		errFatal(err)
-		listener, err = net.ListenTCP("tcp", listenAddr)
-		errFatal(err)
 
 		if tlsCfg.Key != "" {
 			log.Printf("Using TLS: cert %v, key %v\n", tlsCfg.Cert, tlsCfg.Key)
 			cert, err := tls.LoadX509KeyPair(tlsCfg.Cert, tlsCfg.Key)
 			errFatalf("Error loading key pair: %v\n", err)
 
-			listener = tls.NewListener(listener, &tls.Config{
+			listener, err = tls.Listen("tcp", addr, &tls.Config{
 				Certificates: []tls.Certificate{cert},
 			})
+			errFatalf("Error setting up listener: %v\n", err)
 		}
 
-		log.Println("Listening on", listenAddr)
+		log.Println("Listening on", listener.Addr())
 		wg.Add(1)
 		go listen(&wg, listener)
 	}