diff --git a/internal/common/transfer.go b/internal/common/transfer.go index 2ff61b29..594768c8 100644 --- a/internal/common/transfer.go +++ b/internal/common/transfer.go @@ -329,6 +329,21 @@ func (t *BaseTransfer) getUploadFileSize() (int64, int, error) { var fileSize int64 var deletedFiles int + switch dataprovider.GetQuotaTracking() { + case 0: + return fileSize, deletedFiles, errors.New("quota tracking disabled") + case 2: + if !t.Connection.User.HasQuotaRestrictions() { + vfolder, err := t.Connection.User.GetVirtualFolderForPath(path.Dir(t.requestPath)) + if err != nil { + return fileSize, deletedFiles, errors.New("quota tracking disabled for this user") + } + if vfolder.IsIncludedInUserQuota() { + return fileSize, deletedFiles, errors.New("quota tracking disabled for this user and folder included in user quota") + } + } + } + info, err := t.Fs.Stat(t.fsPath) if err == nil { fileSize = info.Size() diff --git a/internal/common/transfer_test.go b/internal/common/transfer_test.go index 8b41e2ff..1bf0dbe1 100644 --- a/internal/common/transfer_test.go +++ b/internal/common/transfer_test.go @@ -306,8 +306,9 @@ func TestRemovePartialCryptoFile(t *testing.T) { require.NoError(t, err) u := dataprovider.User{ BaseUser: sdk.BaseUser{ - Username: "test", - HomeDir: os.TempDir(), + Username: "test", + HomeDir: os.TempDir(), + QuotaFiles: 1000000, }, } conn := NewBaseConnection(fs.ConnectionID(), ProtocolSFTP, "", "", u)