diff --git a/Assistant.hs b/Assistant.hs index 03864c4208..c1f480f9d2 100644 --- a/Assistant.hs +++ b/Assistant.hs @@ -102,7 +102,6 @@ startDaemon assistant foreground startdelay cannotrun listenhost startbrowser = createAnnexDirectory (parentDir logfile) ifM (liftIO $ isNothing <$> getEnv flag) ( liftIO $ withFile devNull WriteMode $ \nullh -> do - Utility.Daemon.lockPidFile pidfile when (not foreground) $ debugM desc $ "logging to " ++ logfile loghandle <- openLog logfile @@ -116,7 +115,7 @@ startDaemon assistant foreground startdelay cannotrun listenhost startbrowser = , std_err = UseHandle loghandle } exitWith =<< waitForProcess pid - , start id $ do + , start (Utility.Daemon.foreground (Just pidfile)) $ case startbrowser of Nothing -> Nothing Just a -> Just $ a Nothing Nothing diff --git a/Utility/Daemon.hs b/Utility/Daemon.hs index 23d18d2b60..228263911a 100644 --- a/Utility/Daemon.hs +++ b/Utility/Daemon.hs @@ -21,6 +21,8 @@ import Utility.WinLock #ifndef mingw32_HOST_OS import System.Posix import Control.Concurrent.Async +#else +import System.Exit #endif #ifndef mingw32_HOST_OS @@ -54,15 +56,26 @@ daemonize logfd pidfile changedirectory a = do wait =<< asyncWithUnmask (\unmask -> unmask a) out out = exitImmediately ExitSuccess +#endif {- To run an action that is normally daemonized in the forground. -} +#ifndef mingw32_HOST_OS foreground :: Fd -> Maybe FilePath -> IO () -> IO () foreground logfd pidfile a = do +#else +foreground :: Maybe FilePath -> IO () -> IO () +foreground pidfile a = do +#endif maybe noop lockPidFile pidfile +#ifndef mingw32_HOST_OS _ <- tryIO createSession redirLog logfd +#endif a +#ifndef mingw32_HOST_OS exitImmediately ExitSuccess +#else + exitWith ExitSuccess #endif {- Locks the pid file, with an exclusive, non-blocking lock, diff --git a/debian/changelog b/debian/changelog index 843f1b87ac..5cefc2888e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ git-annex (5.20140710) UNRELEASED; urgency=medium resolver. * Deal with change in git 2.0 that made indirect mode merge conflict resolution leave behind old files. + * Windows: Fix locking issue that prevented the webapp starting + (since 5.20140707). -- Joey Hess Wed, 09 Jul 2014 23:29:21 -0400