From 422d901e447297d16391bc634c23dee3cddfa2b0 Mon Sep 17 00:00:00 2001 From: Cody Soyland Date: Tue, 19 Dec 2017 11:01:36 -0600 Subject: [PATCH] Close HTTP handler gracefully (Fixes #1018) An earlier version of this patch (PR #1019) was erroneously removed during a merge. --- server.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index 673541006..2731ad71a 100644 --- a/server.go +++ b/server.go @@ -307,8 +307,13 @@ func (s *Server) Open() error { // Serve HTTP. go func() { - err := http.Serve(s.ln, s.handler) - if err != nil { + server := &http.Server{Handler: s.handler} + go func() { + <-s.closing + server.Close() + }() + err := server.Serve(s.ln) + if err != nil && err.Error() != "http: Server closed" { s.logger.Printf("HTTP handler terminated with error: %s\n", err) } }()