-Removed WriteDeadline in hkexnet.Close()

-hkexsh: fixed (non-)error handling for file copies

Signed-off-by: Russ Magee <rmagee@gmail.com>
This commit is contained in:
Russ Magee 2018-11-20 18:50:09 -08:00
parent 6ac866fdbf
commit 5fb227b9f8
2 changed files with 7 additions and 3 deletions

View file

@ -537,7 +537,7 @@ func (hc *Conn) Close() (err error) {
s := make([]byte, 4) s := make([]byte, 4)
binary.BigEndian.PutUint32(s, uint32(*hc.closeStat)) binary.BigEndian.PutUint32(s, uint32(*hc.closeStat))
log.Printf("** Writing closeStat %d at Close()\n", *hc.closeStat) log.Printf("** Writing closeStat %d at Close()\n", *hc.closeStat)
(*hc.c).SetWriteDeadline(time.Now().Add(500 * time.Millisecond)) //(*hc.c).SetWriteDeadline(time.Now().Add(500 * time.Millisecond))
hc.WritePacket(s, CSOExitStatus) hc.WritePacket(s, CSOExitStatus)
// This avoids a bug where server side may not get its last packet of // This avoids a bug where server side may not get its last packet of
// data through to a client for non-interactive commands which exit // data through to a client for non-interactive commands which exit

View file

@ -148,8 +148,12 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S
// Do a final read for remote's exit status // Do a final read for remote's exit status
s := make([]byte, 4) s := make([]byte, 4)
_, remErr := conn.Read(s) _, remErr := conn.Read(s)
if remErr != io.EOF && !strings.Contains(remErr.Error(), "use of closed network") { if remErr != io.EOF &&
!strings.Contains(remErr.Error(), "use of closed network") &&
!strings.Contains(remErr.Error(), "connection reset by peer") {
fmt.Printf("*** remote status Read() failed: %v\n", remErr) fmt.Printf("*** remote status Read() failed: %v\n", remErr)
} else {
conn.SetStatus(0) // cp finished OK
} }
// If local side status was OK, use remote side's status // If local side status was OK, use remote side's status
@ -206,7 +210,7 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S
if exitStatus == 0 { if exitStatus == 0 {
exitStatus = uint32(conn.GetStatus()) exitStatus = uint32(conn.GetStatus())
} }
fmt.Printf("*** server->client cp finished, status %d ***\n", conn.GetStatus()) log.Printf("*** server->client cp finished, status %d ***\n", conn.GetStatus())
} }
} }
return return