From 930f691919cf5f9a0baa857151a9f4b5345356b8 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 (cherry picked from commit 9e7fc245a79535984c3e0dd3d2c4f042e92cdc6a) --- api/server/server.go | 9 +++++++++ 1 file changed, 9 insertions(+) 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 } } }