From dd746cf343a2178d6820b057bab090ac1445ffb8 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 26 Mar 2018 21:58:42 -0700 Subject: [PATCH] Fixed handling of -x non-interactive command runs and hangup of interactive session --- demo/client/client.go | 1 + demo/server/server.go | 2 +- hkexnet.go | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/demo/client/client.go b/demo/client/client.go index aaeda89..9621fca 100644 --- a/demo/client/client.go +++ b/demo/client/client.go @@ -168,6 +168,7 @@ func main() { // exit with outerr == nil _, outerr := io.Copy(conn, os.Stdin) if outerr != nil { + log.Println(outerr) if outerr.Error() != "EOF" { fmt.Println(outerr) os.Exit(2) diff --git a/demo/server/server.go b/demo/server/server.go index bbdd6c6..ac8a362 100644 --- a/demo/server/server.go +++ b/demo/server/server.go @@ -121,9 +121,9 @@ func runShellAs(who string, cmd string, interactive bool, conn hkex.Conn) (err e //err = c.Run() // returns when c finishes. + log.Printf("[%s]\n", cmd) if err != nil { log.Printf("Command finished with error: %v", err) - log.Printf("[%s]\n", cmd) } return } diff --git a/hkexnet.go b/hkexnet.go index b74407e..6858902 100644 --- a/hkexnet.go +++ b/hkexnet.go @@ -314,13 +314,13 @@ func (c Conn) Read(b []byte) (n int, err error) { err = binary.Read(c.c, binary.BigEndian, &hmacIn) // Normal client 'exit' from interactive session will cause // (on server side) err.Error() == ": use of closed network connection" - if err != nil && err.Error() != "EOF" { + if err != nil { if !strings.HasSuffix(err.Error(), "use of closed network connection") { log.Println("unexpected Read() err:", err) } else { log.Println("[Client hung up]") - return 0, io.EOF } + return 0, err } //if err != nil { @@ -424,7 +424,8 @@ func (c Conn) Write(b []byte) (n int, err error) { n, err = c.c.Write(wb.Bytes()) if err != nil { - panic(err) + //panic(err) + log.Println(err) } return }