mirror of https://gogs.blitter.com/RLabs/xs
				
				
				
			client prints nonzero remote end exit status; comment cleanup
This commit is contained in:
		
							parent
							
								
									db1b494d00
								
							
						
					
					
						commit
						8a24fb113f
					
				| 
						 | 
					@ -241,6 +241,9 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State,
 | 
				
			||||||
		_, inerr := io.Copy(os.Stdout, conn)
 | 
							_, inerr := io.Copy(os.Stdout, conn)
 | 
				
			||||||
		if inerr != nil {
 | 
							if inerr != nil {
 | 
				
			||||||
			_ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // Best effort.
 | 
								_ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // Best effort.
 | 
				
			||||||
 | 
								// Copy operations and user logging off will cause
 | 
				
			||||||
 | 
								// a "use of closed network connection" so handle that
 | 
				
			||||||
 | 
								// gracefully here
 | 
				
			||||||
			if !strings.HasSuffix(inerr.Error(), "use of closed network connection") {
 | 
								if !strings.HasSuffix(inerr.Error(), "use of closed network connection") {
 | 
				
			||||||
				log.Println(inerr)
 | 
									log.Println(inerr)
 | 
				
			||||||
				os.Exit(1)
 | 
									os.Exit(1)
 | 
				
			||||||
| 
						 | 
					@ -545,5 +548,8 @@ func main() {
 | 
				
			||||||
		_ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // Best effort.
 | 
							_ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // Best effort.
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if rec.status != 0 {
 | 
				
			||||||
 | 
							fmt.Fprintln(os.Stderr, "Remote end exited with status:", rec.status)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	os.Exit(rec.status)
 | 
						os.Exit(rec.status)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -315,8 +315,8 @@ func runShellAs(who string, cmd string, interactive bool, conn hkexnet.Conn, cha
 | 
				
			||||||
					exitStatus = status.ExitStatus()
 | 
										exitStatus = status.ExitStatus()
 | 
				
			||||||
					log.Printf("Exit Status: %d", exitStatus)
 | 
										log.Printf("Exit Status: %d", exitStatus)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
		conn.SetStatus(uint8(exitStatus))
 | 
								conn.SetStatus(uint8(exitStatus))
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		wg.Wait() // Wait on pty->stdout completion to client
 | 
							wg.Wait() // Wait on pty->stdout completion to client
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -530,7 +530,7 @@ func main() {
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					hc.SetStatus(uint8(cmdStatus))
 | 
										hc.SetStatus(uint8(cmdStatus))
 | 
				
			||||||
					// Signal other end transfer is complete
 | 
										// Signal other end transfer is complete
 | 
				
			||||||
					hc.WritePacket([]byte{byte(/*255*/cmdStatus)}, hkexnet.CSOExitStatus)
 | 
										hc.WritePacket([]byte{byte( /*255*/ cmdStatus)}, hkexnet.CSOExitStatus)
 | 
				
			||||||
					//fmt.Println("Waiting for EOF from other end.")
 | 
										//fmt.Println("Waiting for EOF from other end.")
 | 
				
			||||||
					_, _ = hc.Read(nil /*ackByte*/)
 | 
										_, _ = hc.Read(nil /*ackByte*/)
 | 
				
			||||||
					//fmt.Println("Got remote end ack.")
 | 
										//fmt.Println("Got remote end ack.")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue