diff options
author | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2017-11-21 15:24:45 +0100 |
---|---|---|
committer | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2017-11-21 15:24:45 +0100 |
commit | d2335afe1058153a3aad27fa483499b0639e096c (patch) | |
tree | 60e64c3c0e34c932a8f50aac967c02c6637175ea /lib/apiv1/exec.go | |
parent | 985b32b78da6e5ea008e45f6cf2df140df350ea9 (diff) |
Always close gdb pty/tty even if an error rises.
Diffstat (limited to 'lib/apiv1/exec.go')
-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, |