simplify FileOpenFlags to os.Flags conversion

This commit is contained in:
Nicola Murino 2019-08-04 11:02:38 +02:00
parent 80b9c40489
commit 61b5a1d9a3
2 changed files with 7 additions and 8 deletions

View file

@ -385,11 +385,12 @@ func (c Connection) handleSFTPUploadToExistingFile(pflags sftp.FileOpenFlags, re
return nil, sftp.ErrSshFxFailure
}
osFlags, trunc := getOSOpenFlags(pflags)
osFlags := getOSOpenFlags(pflags)
if !trunc {
if osFlags&os.O_TRUNC == 0 {
// see https://github.com/pkg/sftp/issues/295
logger.Info(logSender, "upload resume is not supported, returning error")
logger.Info(logSender, "upload resume is not supported, returning error for file: %v user: %v", requestPath,
c.User.Username)
return nil, sftp.ErrSshFxOpUnsupported
}
@ -565,9 +566,8 @@ func (c Connection) createMissingDirs(filePath string) error {
return nil
}
func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int, trunc bool) {
func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int) {
var osFlags int
truncateFile := false
if requestFlags.Read && requestFlags.Write {
osFlags |= os.O_RDWR
} else if requestFlags.Write {
@ -581,12 +581,11 @@ func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int, trunc bool) {
}
if requestFlags.Trunc {
osFlags |= os.O_TRUNC
truncateFile = true
}
if requestFlags.Excl {
osFlags |= os.O_EXCL
}
return osFlags, truncateFile
return osFlags
}
func getUploadTempFilePath(path string) string {

View file

@ -56,7 +56,7 @@ func TestGetOSOpenFlags(t *testing.T) {
flags.Write = true
flags.Append = true
flags.Excl = true
osFlags, _ := getOSOpenFlags(flags)
osFlags := getOSOpenFlags(flags)
if osFlags&os.O_WRONLY == 0 || osFlags&os.O_APPEND == 0 || osFlags&os.O_EXCL == 0 {
t.Errorf("error getting os flags from sftp file open flags")
}