diff --git a/api/server/server.go b/api/server/server.go index 671e0a136..321a4aa4e 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -462,6 +462,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: @@ -474,6 +480,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 } } }