@@ -184,7 +184,7 @@ runXFTPRcvWorker c srv Worker {doWork} = do
184184 cfg <- asks config
185185 forever $ do
186186 lift $ waitForWork doWork
187- atomically $ assertAgentForeground c
187+ liftIO $ assertAgentForeground c
188188 runXFTPOperation cfg
189189 where
190190 runXFTPOperation :: AgentConfig -> AM ()
@@ -194,7 +194,7 @@ runXFTPRcvWorker c srv Worker {doWork} = do
194194 (fc@ RcvFileChunk {userId, rcvFileId, rcvFileEntityId, digest, fileTmpPath, replicas = replica@ RcvFileChunkReplica {rcvChunkReplicaId, server, delay} : _}, approvedRelays) -> do
195195 let ri' = maybe ri (\ d -> ri {initialInterval = d, increaseAfter = 0 }) delay
196196 withRetryIntervalLimit xftpConsecutiveRetries ri' $ \ delay' loop -> do
197- atomically $ waitWhileSuspended c
197+ liftIO $ waitWhileSuspended c
198198 liftIO $ waitForUserNetwork c
199199 atomically $ incXFTPServerStat c userId srv downloadAttempts
200200 downloadFileChunk fc replica approvedRelays
@@ -205,7 +205,7 @@ runXFTPRcvWorker c srv Worker {doWork} = do
205205 when (serverHostError e) $ notify c rcvFileEntityId $ RFWARN e
206206 liftIO $ closeXFTPServerClient c userId server digest
207207 withStore' c $ \ db -> updateRcvChunkReplicaDelay db rcvChunkReplicaId replicaDelay
208- atomically $ assertAgentForeground c
208+ liftIO $ assertAgentForeground c
209209 loop
210210 retryDone e = do
211211 atomically . incXFTPServerStat c userId srv $ case e of
@@ -221,7 +221,7 @@ runXFTPRcvWorker c srv Worker {doWork} = do
221221 chunkSpec = XFTPRcvChunkSpec chunkPath chSize (unFileDigest digest)
222222 relChunkPath = fileTmpPath </> takeFileName chunkPath
223223 agentXFTPDownloadChunk c userId digest replica chunkSpec
224- atomically $ waitUntilForeground c
224+ liftIO $ waitUntilForeground c
225225 (entityId, complete, progress) <- withStore c $ \ db -> runExceptT $ do
226226 liftIO $ updateRcvFileChunkReceived db (rcvChunkReplicaId replica) rcvChunkId relChunkPath
227227 RcvFile {size = FileSize currentSize, chunks, redirect} <- ExceptT $ getRcvFile db rcvFileId
@@ -240,7 +240,7 @@ runXFTPRcvWorker c srv Worker {doWork} = do
240240 where
241241 ipAddressProtected' :: AM Bool
242242 ipAddressProtected' = do
243- cfg <- liftIO $ getNetworkConfig' c
243+ cfg <- liftIO $ getFastNetworkConfig c
244244 pure $ ipAddressProtected cfg srv
245245 receivedSize :: [RcvFileChunk ] -> Int64
246246 receivedSize = foldl' (\ sz ch -> sz + receivedChunkSize ch) 0
@@ -273,7 +273,7 @@ runXFTPRcvLocalWorker c Worker {doWork} = do
273273 cfg <- asks config
274274 forever $ do
275275 lift $ waitForWork doWork
276- atomically $ assertAgentForeground c
276+ liftIO $ assertAgentForeground c
277277 runXFTPOperation cfg
278278 where
279279 runXFTPOperation :: AgentConfig -> AM ()
@@ -299,12 +299,12 @@ runXFTPRcvLocalWorker c Worker {doWork} = do
299299 Nothing -> do
300300 notify c rcvFileEntityId $ RFDONE fsSavePath
301301 lift $ forM_ tmpPath (removePath <=< toFSFilePath)
302- atomically $ waitUntilForeground c
302+ liftIO $ waitUntilForeground c
303303 withStore' c (`updateRcvFileComplete` rcvFileId)
304304 Just RcvFileRedirect {redirectFileInfo, redirectDbId} -> do
305305 let RedirectFileInfo {size = redirectSize, digest = redirectDigest} = redirectFileInfo
306306 lift $ forM_ tmpPath (removePath <=< toFSFilePath)
307- atomically $ waitUntilForeground c
307+ liftIO $ waitUntilForeground c
308308 withStore' c (`updateRcvFileComplete` rcvFileId)
309309 -- proceed with redirect
310310 yaml <- liftError (FILE . FILE_IO . show ) (CF. readFile $ CryptoFile fsSavePath cfArgs) `agentFinally` (lift $ toFSFilePath fsSavePath >>= removePath)
@@ -392,7 +392,7 @@ runXFTPSndPrepareWorker c Worker {doWork} = do
392392 cfg <- asks config
393393 forever $ do
394394 lift $ waitForWork doWork
395- atomically $ assertAgentForeground c
395+ liftIO $ assertAgentForeground c
396396 runXFTPOperation cfg
397397 where
398398 runXFTPOperation :: AgentConfig -> AM ()
@@ -454,17 +454,17 @@ runXFTPSndPrepareWorker c Worker {doWork} = do
454454 SndFileChunkReplica {server} : _ -> Right server
455455 createChunk :: Int -> SndFileChunk -> AM (ProtocolServer 'PXFTP)
456456 createChunk numRecipients' ch = do
457- atomically $ assertAgentForeground c
457+ liftIO $ assertAgentForeground c
458458 (replica, ProtoServerWithAuth srv _) <- tryCreate
459459 withStore' c $ \ db -> createSndFileReplica db ch replica
460460 pure srv
461461 where
462462 tryCreate = do
463463 usedSrvs <- newTVarIO ([] :: [XFTPServer ])
464464 let AgentClient {xftpServers} = c
465- userSrvCount <- length <$> atomically ( TM. lookup userId xftpServers)
465+ userSrvCount <- liftIO $ length <$> TM. lookupIO userId xftpServers
466466 withRetryIntervalCount (riFast ri) $ \ n _ loop -> do
467- atomically $ waitWhileSuspended c
467+ liftIO $ waitWhileSuspended c
468468 liftIO $ waitForUserNetwork c
469469 let triedAllSrvs = n > userSrvCount
470470 createWithNextSrv usedSrvs
@@ -474,7 +474,7 @@ runXFTPSndPrepareWorker c Worker {doWork} = do
474474 retryLoop loop triedAllSrvs e = do
475475 flip catchAgentError (\ _ -> pure () ) $ do
476476 when (triedAllSrvs && serverHostError e) $ notify c sndFileEntityId $ SFWARN e
477- atomically $ assertAgentForeground c
477+ liftIO $ assertAgentForeground c
478478 loop
479479 createWithNextSrv usedSrvs = do
480480 deleted <- withStore' c $ \ db -> getSndFileDeleted db sndFileId
@@ -494,7 +494,7 @@ runXFTPSndWorker c srv Worker {doWork} = do
494494 cfg <- asks config
495495 forever $ do
496496 lift $ waitForWork doWork
497- atomically $ assertAgentForeground c
497+ liftIO $ assertAgentForeground c
498498 runXFTPOperation cfg
499499 where
500500 runXFTPOperation :: AgentConfig -> AM ()
@@ -504,7 +504,7 @@ runXFTPSndWorker c srv Worker {doWork} = do
504504 fc@ SndFileChunk {userId, sndFileId, sndFileEntityId, filePrefixPath, digest, replicas = replica@ SndFileChunkReplica {sndChunkReplicaId, server, delay} : _} -> do
505505 let ri' = maybe ri (\ d -> ri {initialInterval = d, increaseAfter = 0 }) delay
506506 withRetryIntervalLimit xftpConsecutiveRetries ri' $ \ delay' loop -> do
507- atomically $ waitWhileSuspended c
507+ liftIO $ waitWhileSuspended c
508508 liftIO $ waitForUserNetwork c
509509 atomically $ incXFTPServerStat c userId srv uploadAttempts
510510 uploadFileChunk cfg fc replica
@@ -515,7 +515,7 @@ runXFTPSndWorker c srv Worker {doWork} = do
515515 when (serverHostError e) $ notify c sndFileEntityId $ SFWARN e
516516 liftIO $ closeXFTPServerClient c userId server digest
517517 withStore' c $ \ db -> updateSndChunkReplicaDelay db sndChunkReplicaId replicaDelay
518- atomically $ assertAgentForeground c
518+ liftIO $ assertAgentForeground c
519519 loop
520520 retryDone e = do
521521 atomically $ incXFTPServerStat c userId srv uploadErrs
@@ -526,9 +526,9 @@ runXFTPSndWorker c srv Worker {doWork} = do
526526 fsFilePath <- lift $ toFSFilePath filePath
527527 unlessM (doesFileExist fsFilePath) $ throwE $ FILE NO_FILE
528528 let chunkSpec' = chunkSpec {filePath = fsFilePath} :: XFTPChunkSpec
529- atomically $ assertAgentForeground c
529+ liftIO $ assertAgentForeground c
530530 agentXFTPUploadChunk c userId chunkDigest replica' chunkSpec'
531- atomically $ waitUntilForeground c
531+ liftIO $ waitUntilForeground c
532532 sf@ SndFile {sndFileEntityId, prefixPath, chunks} <- withStore c $ \ db -> do
533533 updateSndChunkReplicaStatus db sndChunkReplicaId SFRSUploaded
534534 getSndFile db sndFileId
@@ -666,7 +666,7 @@ runXFTPDelWorker c srv Worker {doWork} = do
666666 cfg <- asks config
667667 forever $ do
668668 lift $ waitForWork doWork
669- atomically $ assertAgentForeground c
669+ liftIO $ assertAgentForeground c
670670 runXFTPOperation cfg
671671 where
672672 runXFTPOperation :: AgentConfig -> AM ()
@@ -677,7 +677,7 @@ runXFTPDelWorker c srv Worker {doWork} = do
677677 processDeletedReplica replica@ DeletedSndChunkReplica {deletedSndChunkReplicaId, userId, server, chunkDigest, delay} = do
678678 let ri' = maybe ri (\ d -> ri {initialInterval = d, increaseAfter = 0 }) delay
679679 withRetryIntervalLimit xftpConsecutiveRetries ri' $ \ delay' loop -> do
680- atomically $ waitWhileSuspended c
680+ liftIO $ waitWhileSuspended c
681681 liftIO $ waitForUserNetwork c
682682 atomically $ incXFTPServerStat c userId srv deleteAttempts
683683 deleteChunkReplica
@@ -688,7 +688,7 @@ runXFTPDelWorker c srv Worker {doWork} = do
688688 when (serverHostError e) $ notify c " " $ SFWARN e
689689 liftIO $ closeXFTPServerClient c userId server chunkDigest
690690 withStore' c $ \ db -> updateDeletedSndChunkReplicaDelay db deletedSndChunkReplicaId replicaDelay
691- atomically $ assertAgentForeground c
691+ liftIO $ assertAgentForeground c
692692 loop
693693 retryDone e = do
694694 atomically $ incXFTPServerStat c userId srv deleteErrs
@@ -703,7 +703,7 @@ delWorkerInternalError c deletedSndChunkReplicaId e = do
703703 withStore' c $ \ db -> deleteDeletedSndChunkReplica db deletedSndChunkReplicaId
704704 notify c " " $ SFERR e
705705
706- assertAgentForeground :: AgentClient -> STM ()
706+ assertAgentForeground :: AgentClient -> IO ()
707707assertAgentForeground c = do
708708 throwWhenInactive c
709709 waitUntilForeground c
0 commit comments