diff --git a/src/Simplex/FileTransfer/Server/Env.hs b/src/Simplex/FileTransfer/Server/Env.hs index 23450384f..3a2e6d785 100644 --- a/src/Simplex/FileTransfer/Server/Env.hs +++ b/src/Simplex/FileTransfer/Server/Env.hs @@ -41,6 +41,7 @@ import Simplex.FileTransfer.Server.Store import Simplex.Messaging.Agent.Store.Shared (MigrationConfirmation) #if defined(dbServerPostgres) import Data.Functor (($>)) +import Data.Maybe (isNothing) import Simplex.FileTransfer.Server.Store.Postgres (PostgresFileStore, importFileStore, exportFileStore) import Simplex.FileTransfer.Server.Store.Postgres.Config (PostgresFileStoreCfg (..), defaultXFTPDBOpts) import Simplex.Messaging.Server.CLI (iniDBOptions, settingIsOn) @@ -190,14 +191,11 @@ checkFileStoreMode ini storeType storeLogFilePath = case storeType of "database" -> do storeLogExists <- doesFileExist storeLogFilePath let dbStoreLogOn = settingIsOn "STORE_LOG" "db_store_log" ini - when (storeLogExists && isNothing_ dbStoreLogOn) $ do + when (storeLogExists && isNothing dbStoreLogOn) $ do putStrLn $ "Error: store log file " <> storeLogFilePath <> " exists but store_files is `database`." putStrLn "Use `file-server database import` to migrate, or set `db_store_log: on`." exitFailure _ -> pure () - where - isNothing_ Nothing = True - isNothing_ _ = False #else checkFileStoreMode _ _ _ = pure () #endif diff --git a/src/Simplex/FileTransfer/Server/Store.hs b/src/Simplex/FileTransfer/Server/Store.hs index 008a959f4..ae9042160 100644 --- a/src/Simplex/FileTransfer/Server/Store.hs +++ b/src/Simplex/FileTransfer/Server/Store.hs @@ -97,9 +97,15 @@ instance FileStoreClass STMFileStore where pure $ Right () setFilePath st sId fPath = atomically $ - withSTMFile st sId $ \FileRec {filePath} -> do - writeTVar filePath (Just fPath) - pure $ Right () + withSTMFile st sId $ \FileRec {filePath, fileStatus} -> do + readTVar filePath >>= \case + Just _ -> pure $ Left AUTH + Nothing -> + readTVar fileStatus >>= \case + EntityActive -> do + writeTVar filePath (Just fPath) + pure $ Right () + _ -> pure $ Left AUTH addRecipient st@STMFileStore {recipients} senderId (FileRecipient rId rKey) = atomically $ withSTMFile st senderId $ \FileRec {recipientIds} -> do diff --git a/src/Simplex/FileTransfer/Server/Store/Postgres.hs b/src/Simplex/FileTransfer/Server/Store/Postgres.hs index d883eb4a7..ceca5c89f 100644 --- a/src/Simplex/FileTransfer/Server/Store/Postgres.hs +++ b/src/Simplex/FileTransfer/Server/Store/Postgres.hs @@ -9,11 +9,6 @@ module Simplex.FileTransfer.Server.Store.Postgres ( PostgresFileStore (..), - withDB, - withDB', - handleDuplicate, - assertUpdated, - withLog, importFileStore, exportFileStore, ) diff --git a/tests/CoreTests/XFTPStoreTests.hs b/tests/CoreTests/XFTPStoreTests.hs index a70ac0812..2d0ff11f7 100644 --- a/tests/CoreTests/XFTPStoreTests.hs +++ b/tests/CoreTests/XFTPStoreTests.hs @@ -6,22 +6,17 @@ module CoreTests.XFTPStoreTests (xftpStoreTests, xftpMigrationTests) where import Control.Monad -import qualified Data.ByteString.Char8 as B import Data.Word (Word32) -import qualified Data.Set as S import Simplex.FileTransfer.Protocol (FileInfo (..), SFileParty (..)) import Simplex.FileTransfer.Server.Store -import Simplex.FileTransfer.Server.Store.Postgres (PostgresFileStore) -import Simplex.FileTransfer.Server.Store.Postgres.Config (PostgresFileStoreCfg) -import Simplex.FileTransfer.Server.StoreLog +import Simplex.FileTransfer.Server.Store.Postgres (PostgresFileStore, importFileStore, exportFileStore) +import Simplex.FileTransfer.Server.StoreLog (closeStoreLog, readWriteFileStore, writeFileStore) import Simplex.FileTransfer.Transport (XFTPErrorType (..)) import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Protocol (BlockingInfo (..), BlockingReason (..), EntityId (..)) import Simplex.Messaging.Server.QueueStore (ServerEntityStatus (..)) -import Simplex.Messaging.SystemTime (RoundedSystemTime (..)) -import Simplex.FileTransfer.Server.Store.Postgres (importFileStore, exportFileStore) -import Simplex.FileTransfer.Server.StoreLog (readWriteFileStore, writeFileStore) import Simplex.Messaging.Server.StoreLog (openWriteStoreLog) +import Simplex.Messaging.SystemTime (RoundedSystemTime (..)) import System.Directory (doesFileExist, removeFile) import Test.Hspec hiding (fit, it) import UnliftIO.STM