sftpd: send exit-status message on close

this fix restic compatibility
This commit is contained in:
Nicola Murino 2019-11-14 16:49:42 +01:00
parent 08e85f6be9
commit 5be1d1be69
2 changed files with 10 additions and 5 deletions

View file

@ -28,10 +28,6 @@ type execMsg struct {
Command string
}
type exitStatusMsg struct {
Status uint32
}
type scpCommand struct {
connection Connection
args []string

View file

@ -30,6 +30,10 @@ const defaultPrivateKeyName = "id_rsa"
var sftpExtensions = []string{"posix-rename@openssh.com"}
type exitStatusMsg struct {
Status uint32
}
// Configuration for the SFTP server
type Configuration struct {
// Identification string used by the server
@ -329,7 +333,12 @@ func (c Configuration) handleSftpConnection(channel ssh.Channel, connection Conn
server := sftp.NewRequestServer(channel, handler)
if err := server.Serve(); err == io.EOF {
connection.Log(logger.LevelDebug, logSender, "connection closed")
connection.Log(logger.LevelDebug, logSender, "connection closed, sending exit-status")
ex := exitStatusMsg{
Status: 0,
}
_, err = channel.SendRequest("exit-status", false, ssh.Marshal(&ex))
connection.Log(logger.LevelDebug, logSender, "send exit status error: %v", err)
server.Close()
} else if err != nil {
connection.Log(logger.LevelWarn, logSender, "connection closed with error: %v", err)