diff --git a/src/Main.hs b/src/Main.hs index 61f0968..dcf80ab 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -6,12 +6,12 @@ module Main where import Control.Applicative (optional) import Control.Concurrent (forkIO, threadDelay) -import Control.Exception (onException) +import Control.Exception (onException, catch) import Control.Exception (throwIO) import Control.Monad (void, forever) import Data.Acid (AcidState(..), openLocalState, createCheckpoint, createArchive) import Data.Acid.Remote (skipAuthenticationCheck, acidServerSockAddr, openRemoteStateSockAddr, skipAuthenticationPerform) -import Data.FileStore (gitFileStore, initialize) +import Data.FileStore (gitFileStore, initialize, FileStoreError(RepositoryExists)) import Data.IMF (Mailbox(..), parse, mailbox) import Data.MIME.Charset (defaultCharsets) import Data.Text.Encoding (encodeUtf8) @@ -36,7 +36,7 @@ import TiedoteMD.Debug serverMain :: SockAddr -> Mailbox -> FilePath -> GitOrigin -> FilePath -> Int -> Int -> IO () serverMain socket mail repoPath origin sendmailPath checkpointDelay port = do - initialize $ gitFileStore repoPath + initialize (gitFileStore repoPath) `catch` \RepositoryExists -> pure () acid <- openLocalState $ emptyState _ <- forkIO $ acidServerSockAddr skipAuthenticationCheck socket acid queueMessages acid