Browse code

Support CloseNotifier for events

Signed-off-by: Alexander Morozov <lk4d4@docker.com>

Alexander Morozov authored on 2015/06/04 03:42:51
Showing 1 changed files
... ...
@@ -461,6 +461,12 @@ func (s *Server) getEvents(version version.Version, w http.ResponseWriter, r *ht
461 461
 			return err
462 462
 		}
463 463
 	}
464
+
465
+	var closeNotify <-chan bool
466
+	if closeNotifier, ok := w.(http.CloseNotifier); ok {
467
+		closeNotify = closeNotifier.CloseNotify()
468
+	}
469
+
464 470
 	for {
465 471
 		select {
466 472
 		case ev := <-l:
... ...
@@ -473,6 +479,9 @@ func (s *Server) getEvents(version version.Version, w http.ResponseWriter, r *ht
473 473
 			}
474 474
 		case <-timer.C:
475 475
 			return nil
476
+		case <-closeNotify:
477
+			logrus.Debug("Client disconnected, stop sending events")
478
+			return nil
476 479
 		}
477 480
 	}
478 481
 }