diff options
-rw-r--r-- | lib/apiv1/exec.go | 18 |
1 files 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, |