From 63456b5c4be1160e6e59840bc45fcbb937f89999 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Tue, 22 Oct 2013 00:17:58 -0700 Subject: [PATCH] fix close connection when client leaves --- server/v2/get_handler.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/v2/get_handler.go b/server/v2/get_handler.go index d0e804273..39e932fe0 100644 --- a/server/v2/get_handler.go +++ b/server/v2/get_handler.go @@ -46,11 +46,19 @@ func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error { } // Start the watcher on the store. - c, err := s.Store().Watch(key, recursive, sinceIndex, s.CommitIndex(), s.Term()) + eventChan, err := s.Store().Watch(key, recursive, sinceIndex, s.CommitIndex(), s.Term()) if err != nil { return etcdErr.NewError(500, key, store.UndefIndex, store.UndefTerm) } - event = <-c + + cn, _ := w.(http.CloseNotifier) + closeChan := cn.CloseNotify() + + select { + case <-closeChan: + return nil + case event = <-eventChan: + } } else { //get // Retrieve the key from the store.