Просмотр исходного кода

Merge pull request #825 from porter-dev/0.5.0-fix-websocket-crash

[0.5.0] Fix websockets crashing when error chan is closed
abelanger5 4 лет назад
Родитель
Сommit
474baecbcf
1 измененных файлов с 4 добавлено и 6 удалено
  1. 4 6
      internal/kubernetes/agent.go

+ 4 - 6
internal/kubernetes/agent.go

@@ -565,7 +565,7 @@ func (a *Agent) StreamControllerStatus(conn *websocket.Conn, kind string, select
 
 	stopper := make(chan struct{})
 	errorchan := make(chan error)
-	defer close(errorchan)
+	defer close(stopper)
 
 	informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
 		UpdateFunc: func(oldObj, newObj interface{}) {
@@ -609,8 +609,7 @@ func (a *Agent) StreamControllerStatus(conn *websocket.Conn, kind string, select
 		// listens for websocket closing handshake
 		for {
 			if _, _, err := conn.ReadMessage(); err != nil {
-				defer conn.Close()
-				close(stopper)
+				conn.Close()
 				errorchan <- nil
 				return
 			}
@@ -711,7 +710,7 @@ func (a *Agent) StreamHelmReleases(conn *websocket.Conn, chartList []string, sel
 
 	stopper := make(chan struct{})
 	errorchan := make(chan error)
-	defer close(errorchan)
+	defer close(stopper)
 
 	informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
 		UpdateFunc: func(oldObj, newObj interface{}) {
@@ -807,8 +806,7 @@ func (a *Agent) StreamHelmReleases(conn *websocket.Conn, chartList []string, sel
 		// listens for websocket closing handshake
 		for {
 			if _, _, err := conn.ReadMessage(); err != nil {
-				defer conn.Close()
-				close(stopper)
+				conn.Close()
 				errorchan <- nil
 				return
 			}