From 30f311bc4f582bb3444aa9558e598c67bbdca513 Mon Sep 17 00:00:00 2001 From: Alexander Morozov Date: Wed, 3 Jun 2015 11:42:51 -0700 Subject: [PATCH] Support CloseNotifier for events Signed-off-by: Alexander Morozov Upstream-commit: 9e7fc245a79535984c3e0dd3d2c4f042e92cdc6a Component: engine --- components/engine/api/server/server.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/engine/api/server/server.go b/components/engine/api/server/server.go index 2ee9beee5e..78728024a7 100644 --- a/components/engine/api/server/server.go +++ b/components/engine/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 } } }