浏览代码

simplify FileOpenFlags to os.Flags conversion

Nicola Murino 6 年之前
父节点
当前提交
61b5a1d9a3
共有 2 个文件被更改,包括 7 次插入8 次删除
  1. 6 7
      sftpd/handler.go
  2. 1 1
      sftpd/internal_test.go

+ 6 - 7
sftpd/handler.go

@@ -385,11 +385,12 @@ func (c Connection) handleSFTPUploadToExistingFile(pflags sftp.FileOpenFlags, re
 		return nil, sftp.ErrSshFxFailure
 		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
 		// 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
 		return nil, sftp.ErrSshFxOpUnsupported
 	}
 	}
 
 
@@ -565,9 +566,8 @@ func (c Connection) createMissingDirs(filePath string) error {
 	return nil
 	return nil
 }
 }
 
 
-func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int, trunc bool) {
+func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int) {
 	var osFlags int
 	var osFlags int
-	truncateFile := false
 	if requestFlags.Read && requestFlags.Write {
 	if requestFlags.Read && requestFlags.Write {
 		osFlags |= os.O_RDWR
 		osFlags |= os.O_RDWR
 	} else if requestFlags.Write {
 	} else if requestFlags.Write {
@@ -581,12 +581,11 @@ func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int, trunc bool) {
 	}
 	}
 	if requestFlags.Trunc {
 	if requestFlags.Trunc {
 		osFlags |= os.O_TRUNC
 		osFlags |= os.O_TRUNC
-		truncateFile = true
 	}
 	}
 	if requestFlags.Excl {
 	if requestFlags.Excl {
 		osFlags |= os.O_EXCL
 		osFlags |= os.O_EXCL
 	}
 	}
-	return osFlags, truncateFile
+	return osFlags
 }
 }
 
 
 func getUploadTempFilePath(path string) string {
 func getUploadTempFilePath(path string) string {

+ 1 - 1
sftpd/internal_test.go

@@ -56,7 +56,7 @@ func TestGetOSOpenFlags(t *testing.T) {
 	flags.Write = true
 	flags.Write = true
 	flags.Append = true
 	flags.Append = true
 	flags.Excl = 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 {
 	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")
 		t.Errorf("error getting os flags from sftp file open flags")
 	}
 	}