Browse Source

Don't run ListenAndServe in a goroutine

Any errors returned in ListenAndServe() (e.g. port already in use) will be
swallowed and not evident to the user.
Jonathon Reinhart 4 years ago
parent
commit
fd3f513b18
1 changed files with 8 additions and 1 deletions
  1. 8 1
      main.go

+ 8 - 1
main.go

@@ -274,7 +274,14 @@ func main() {
 
 
 		if strings.Index(listeners[i], "://") == -1 {
 		if strings.Index(listeners[i], "://") == -1 {
 			log.Printf("Listen on %s ...\n", listener)
 			log.Printf("Listen on %s ...\n", listener)
-			go server.ListenAndServe(listener)
+
+			lsnr, err := net.Listen("tcp", listener)
+			if err != nil {
+				log.Fatal(err)
+			}
+			defer lsnr.Close()
+
+			go server.Serve(lsnr)
 		} else if strings.HasPrefix(listeners[i], "starttls://") {
 		} else if strings.HasPrefix(listeners[i], "starttls://") {
 			listener = strings.TrimPrefix(listener, "starttls://")
 			listener = strings.TrimPrefix(listener, "starttls://")