aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2017-11-21 15:24:45 +0100
committerSebastien Douheret <sebastien.douheret@iot.bzh>2017-11-21 15:24:45 +0100
commitd2335afe1058153a3aad27fa483499b0639e096c (patch)
tree60e64c3c0e34c932a8f50aac967c02c6637175ea
parent985b32b78da6e5ea008e45f6cf2df140df350ea9 (diff)
Always close gdb pty/tty even if an error rises.
-rw-r--r--lib/apiv1/exec.go18
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,