fix: sftp client hang when exit in sftp server example

This commit is contained in:
wsl 2023-11-09 19:32:53 +08:00
parent b0487bc4a6
commit d45e538f7a
2 changed files with 12 additions and 12 deletions

View File

@ -17,7 +17,6 @@ import (
// Based on example server code from golang.org/x/crypto/ssh and server_standalone // Based on example server code from golang.org/x/crypto/ssh and server_standalone
func main() { func main() {
var ( var (
readOnly bool readOnly bool
debugStderr bool debugStderr bool
@ -136,11 +135,12 @@ func main() {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
if err := server.Serve(); err == io.EOF { if err := server.Serve(); err != nil {
server.Close() if err != io.EOF {
log.Print("sftp client exited session.")
} else if err != nil {
log.Fatal("sftp server completed with error:", err) log.Fatal("sftp server completed with error:", err)
} }
} }
server.Close()
log.Print("sftp client exited session.")
}
} }

View File

@ -17,7 +17,6 @@ import (
// Based on example server code from golang.org/x/crypto/ssh and server_standalone // Based on example server code from golang.org/x/crypto/ssh and server_standalone
func main() { func main() {
var ( var (
readOnly bool readOnly bool
debugStderr bool debugStderr bool
@ -120,11 +119,12 @@ func main() {
root := sftp.InMemHandler() root := sftp.InMemHandler()
server := sftp.NewRequestServer(channel, root) server := sftp.NewRequestServer(channel, root)
if err := server.Serve(); err == io.EOF { if err := server.Serve(); err != nil {
server.Close() if err != io.EOF {
log.Print("sftp client exited session.")
} else if err != nil {
log.Fatal("sftp server completed with error:", err) log.Fatal("sftp server completed with error:", err)
} }
} }
server.Close()
log.Print("sftp client exited session.")
}
} }