summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assistant.hs3
-rw-r--r--Utility/Daemon.hs13
-rw-r--r--debian/changelog2
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