diff options
-rw-r--r-- | Assistant.hs | 3 | ||||
-rw-r--r-- | Utility/Daemon.hs | 13 | ||||
-rw-r--r-- | debian/changelog | 2 |
3 files changed, 16 insertions, 2 deletions
diff --git a/Assistant.hs b/Assistant.hs index 03864c420..c1f480f9d 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 23d18d2b6..228263911 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 843f1b87a..5cefc2888 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 <joeyh@debian.org> Wed, 09 Jul 2014 23:29:21 -0400 |