aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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,