From 59a1f2427b80ab717b3dcbce4c0b774f0d65e008 Mon Sep 17 00:00:00 2001 From: Dong Chen Date: Tue, 24 Nov 2015 16:18:18 -0800 Subject: [PATCH] Close tcp connection when client stops '/events' request. Signed-off-by: Dong Chen --- api/events.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/api/events.go b/api/events.go index 4c92410f9a..3d792f5e86 100644 --- a/api/events.go +++ b/api/events.go @@ -46,8 +46,16 @@ func (eh *eventsHandler) Wait(remoteAddr string, until int64) { timer = time.NewTimer(dur) } + // subscribe to http client close event + w := eh.ws[remoteAddr] + var closeNotify <-chan bool + if closeNotifier, ok := w.(http.CloseNotifier); ok { + closeNotify = closeNotifier.CloseNotify() + } + select { case <-eh.cs[remoteAddr]: + case <-closeNotify: case <-timer.C: // `--until` timeout close(eh.cs[remoteAddr]) }