From 246a0d10c22ebe02af2eb34773b77cce10247459 Mon Sep 17 00:00:00 2001 From: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com> Date: Sat, 2 Mar 2024 20:46:05 +0200 Subject: [PATCH] xftp: raise internal upload limit to 5gb (#1020) * xftp: raise internal upload limit to 5gb * extract hard limit from agent --- src/Simplex/FileTransfer/Agent.hs | 2 +- src/Simplex/FileTransfer/Client/Main.hs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Simplex/FileTransfer/Agent.hs b/src/Simplex/FileTransfer/Agent.hs index 9a789a104..f45389462 100644 --- a/src/Simplex/FileTransfer/Agent.hs +++ b/src/Simplex/FileTransfer/Agent.hs @@ -393,7 +393,7 @@ runXFTPSndPrepareWorker c Worker {doWork} = do let CryptoFile {filePath} = srcFile fileName = takeFileName filePath fileSize <- liftIO $ fromInteger <$> CF.getFileContentsSize srcFile - when (fileSize > maxFileSize) $ throwError $ INTERNAL "max file size exceeded" + when (fileSize > maxFileSizeHard) $ throwError $ INTERNAL "max file size exceeded" let fileHdr = smpEncode FileHeader {fileName, fileExtra = Nothing} fileSize' = fromIntegral (B.length fileHdr) + fileSize chunkSizes = prepareChunkSizes $ fileSize' + fileSizeLen + authTagSize diff --git a/src/Simplex/FileTransfer/Client/Main.hs b/src/Simplex/FileTransfer/Client/Main.hs index e1ef9f0d8..c0277cd9f 100644 --- a/src/Simplex/FileTransfer/Client/Main.hs +++ b/src/Simplex/FileTransfer/Client/Main.hs @@ -19,6 +19,7 @@ module Simplex.FileTransfer.Client.Main prepareChunkSizes, prepareChunkSpecs, maxFileSize, + maxFileSizeHard, fileSizeLen, getChunkDigest, SentRecipientReplica (..), @@ -76,12 +77,17 @@ import UnliftIO.Directory xftpClientVersion :: String xftpClientVersion = "1.0.1" +-- | Soft limit for XFTP clients. Should be checked and reported to user. maxFileSize :: Int64 maxFileSize = gb 1 maxFileSizeStr :: String maxFileSizeStr = B.unpack . strEncode $ FileSize maxFileSize +-- | Hard internal limit for XFTP agent after which it refuses to prepare chunks. +maxFileSizeHard :: Int64 +maxFileSizeHard = gb 5 + fileSizeLen :: Int64 fileSizeLen = 8