From d2335afe1058153a3aad27fa483499b0639e096c Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Tue, 21 Nov 2017 15:24:45 +0100 Subject: [PATCH] Always close gdb pty/tty even if an error rises. --- lib/apiv1/exec.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/apiv1/exec.go b/lib/apiv1/exec.go index 30444c1..2adb473 100644 --- a/lib/apiv1/exec.go +++ b/lib/apiv1/exec.go @@ -299,6 +299,16 @@ func (s *APIService) execCmd(c *gin.Context) { execWS.ExitCB = func(e *eows.ExecOverWS, code int, err error) { s.log.Debugf("Command [Cmd ID %s] exited: code %d, error: %v", e.CmdID, code, err) + // Close client tty + defer func() { + if gdbPty != nil { + gdbPty.Close() + } + if gdbTty != nil { + gdbTty.Close() + } + }() + // IO socket can be nil when disconnected so := s.sessions.IOSocketGet(e.Sid) if so == nil { @@ -331,14 +341,6 @@ func (s *APIService) execCmd(c *gin.Context) { } } - // Close client tty - if gdbPty != nil { - gdbPty.Close() - } - if gdbTty != nil { - gdbTty.Close() - } - // FIXME replace by .BroadcastTo a room errSoEmit := (*so).Emit(ExecExitEvent, ExecExitMsg{ CmdID: e.CmdID, -- 2.16.6