From fd3f513b18cb4df70ccb4b43baebfdf6b1e66ae3 Mon Sep 17 00:00:00 2001 From: Jonathon Reinhart Date: Sun, 14 Feb 2021 23:24:25 -0500 Subject: [PATCH] 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. --- main.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 85d8e30..afa258d 100644 --- a/main.go +++ b/main.go @@ -274,7 +274,14 @@ func main() { if strings.Index(listeners[i], "://") == -1 { 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://") { listener = strings.TrimPrefix(listener, "starttls://")