Support CloseNotifier for events

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 9e7fc245a79535984c3e0dd3d2c4f042e92cdc6a
Component: engine
This commit is contained in:
Alexander Morozov
2015-06-03 11:42:51 -07:00
parent 84b3be115b
commit 30f311bc4f

View File

@ -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
}
}
}