diff --git a/api/server/server.go b/api/server/server.go index 2ee9beee5e..78728024a7 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -461,6 +461,12 @@ func (s *Server) getEvents(version version.Version, w http.ResponseWriter, r *ht return err } } + + var closeNotify <-chan bool + if closeNotifier, ok := w.(http.CloseNotifier); ok { + closeNotify = closeNotifier.CloseNotify() + } + for { select { case ev := <-l: @@ -473,6 +479,9 @@ func (s *Server) getEvents(version version.Version, w http.ResponseWriter, r *ht } case <-timer.C: return nil + case <-closeNotify: + logrus.Debug("Client disconnected, stop sending events") + return nil } } }