From: Sebastien Douheret Date: Tue, 21 Nov 2017 14:24:45 +0000 (+0100) Subject: Always close gdb pty/tty even if an error rises. X-Git-Tag: v1.0.0-rc1~11 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fxds%2Fxds-server.git;a=commitdiff_plain;h=d2335afe1058153a3aad27fa483499b0639e096c Always close gdb pty/tty even if an error rises. --- 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,