From 8c3450e2002b861d87c47cd33c36b67488e73a0d Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Wed, 27 Aug 2014 16:14:55 -0700 Subject: [PATCH] etcdserver/etcdhttp: cancel wait on conn close --- etcdserver2/etcdhttp/http.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/etcdserver2/etcdhttp/http.go b/etcdserver2/etcdhttp/http.go index 23491bf7d..bf4b56580 100644 --- a/etcdserver2/etcdhttp/http.go +++ b/etcdserver2/etcdhttp/http.go @@ -58,8 +58,15 @@ func encodeResponse(ctx context.Context, w http.ResponseWriter, resp etcdserver. case resp.Watcher != nil: // TODO(bmizerany): support streaming? defer resp.Watcher.Remove() + var nch <-chan bool + if x, ok := w.(http.CloseNotifier); ok { + nch = x.CloseNotify() + } select { case ev = <-resp.Watcher.EventChan: + case <-nch: + // TODO: log something? + return nil case <-ctx.Done(): return ctx.Err() }