Explorar o código

Merge pull request #13712 from LK4D4/fix_leak_events

Support CloseNotifier for events
Arnaud Porterie %!s(int64=10) %!d(string=hai) anos
pai
achega
ad56d797d3
Modificáronse 1 ficheiros con 9 adicións e 0 borrados
  1. 9 0
      api/server/server.go

+ 9 - 0
api/server/server.go

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