From 97f39ca375a4f8d3f8a4d8c9ef2b029aaee196cd Mon Sep 17 00:00:00 2001 From: Marcos Lilljedahl Date: Sat, 8 Oct 2016 15:04:30 +0200 Subject: [PATCH] Remove writer if websocket disconnects --- handlers/exec.go | 3 ++- services/session.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/handlers/exec.go b/handlers/exec.go index 3ab42b6..b34cfe8 100644 --- a/handlers/exec.go +++ b/handlers/exec.go @@ -39,8 +39,8 @@ func Exec(ws *websocket.Conn) { instance.Stdout.AddWriter(u1.String(), ws) go func() { io.Copy(instance.Stdout, instance.Conn.Reader) + instance.Stdout.RemoveWriter(u1.String()) }() - defer conn.Close() go func() { io.Copy(instance.Conn.Conn, ws) }() @@ -53,6 +53,7 @@ func Exec(ws *websocket.Conn) { go func() { io.Copy(instance.Conn.Conn, ws) + instance.Stdout.RemoveWriter(u1.String()) }() select { case <-ctx.Done(): diff --git a/services/session.go b/services/session.go index 26f3482..4c8ced6 100644 --- a/services/session.go +++ b/services/session.go @@ -27,6 +27,7 @@ func NewSession() (*types.Session, error) { s = GetSession(s.Id) log.Printf("Starting clean up of session [%s]\n", s.Id) for _, i := range s.Instances { + i.Conn.Close() if err := DeleteContainer(i.Name); err != nil { log.Println(err) }