mirror of
https://gogs.blitter.com/RLabs/xs
synced 2024-08-14 10:26:42 +00:00
Fixed handling of -x non-interactive command runs and hangup of interactive session
This commit is contained in:
parent
cb0ce956b9
commit
dd746cf343
3 changed files with 6 additions and 4 deletions
|
@ -168,6 +168,7 @@ func main() {
|
||||||
// exit with outerr == nil
|
// exit with outerr == nil
|
||||||
_, outerr := io.Copy(conn, os.Stdin)
|
_, outerr := io.Copy(conn, os.Stdin)
|
||||||
if outerr != nil {
|
if outerr != nil {
|
||||||
|
log.Println(outerr)
|
||||||
if outerr.Error() != "EOF" {
|
if outerr.Error() != "EOF" {
|
||||||
fmt.Println(outerr)
|
fmt.Println(outerr)
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
|
|
|
@ -121,9 +121,9 @@ func runShellAs(who string, cmd string, interactive bool, conn hkex.Conn) (err e
|
||||||
|
|
||||||
//err = c.Run() // returns when c finishes.
|
//err = c.Run() // returns when c finishes.
|
||||||
|
|
||||||
|
log.Printf("[%s]\n", cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Command finished with error: %v", err)
|
log.Printf("Command finished with error: %v", err)
|
||||||
log.Printf("[%s]\n", cmd)
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -314,13 +314,13 @@ func (c Conn) Read(b []byte) (n int, err error) {
|
||||||
err = binary.Read(c.c, binary.BigEndian, &hmacIn)
|
err = binary.Read(c.c, binary.BigEndian, &hmacIn)
|
||||||
// Normal client 'exit' from interactive session will cause
|
// Normal client 'exit' from interactive session will cause
|
||||||
// (on server side) err.Error() == "<iface/addr info ...>: use of closed network connection"
|
// (on server side) err.Error() == "<iface/addr info ...>: use of closed network connection"
|
||||||
if err != nil && err.Error() != "EOF" {
|
if err != nil {
|
||||||
if !strings.HasSuffix(err.Error(), "use of closed network connection") {
|
if !strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||||
log.Println("unexpected Read() err:", err)
|
log.Println("unexpected Read() err:", err)
|
||||||
} else {
|
} else {
|
||||||
log.Println("[Client hung up]")
|
log.Println("[Client hung up]")
|
||||||
return 0, io.EOF
|
|
||||||
}
|
}
|
||||||
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
//if err != nil {
|
//if err != nil {
|
||||||
|
@ -424,7 +424,8 @@ func (c Conn) Write(b []byte) (n int, err error) {
|
||||||
|
|
||||||
n, err = c.c.Write(wb.Bytes())
|
n, err = c.c.Write(wb.Bytes())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
//panic(err)
|
||||||
|
log.Println(err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue