From: Sebastien Douheret <sebastien.douheret@iot.bzh>
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?a=commitdiff_plain;h=d2335afe1058153a3aad27fa483499b0639e096c;p=src%2Fxds%2Fxds-server.git

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,