summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Annex/Ssh.hs7
-rw-r--r--CmdLine.hs2
-rw-r--r--Types/CleanupActions.hs1
3 files changed, 6 insertions, 4 deletions
diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs
index aedf418f8..583a590ae 100644
--- a/Annex/Ssh.hs
+++ b/Annex/Ssh.hs
@@ -9,7 +9,6 @@
module Annex.Ssh (
sshCachingOptions,
- sshCleanup,
sshCacheDir,
sshReadPort,
) where
@@ -24,6 +23,7 @@ import qualified Build.SysConfig as SysConfig
import qualified Annex
import Config
import Utility.Env
+import Types.CleanupActions
#ifndef mingw32_HOST_OS
import Annex.Perms
#endif
@@ -31,7 +31,9 @@ import Annex.Perms
{- Generates parameters to ssh to a given host (or user@host) on a given
- port, with connection caching. -}
sshCachingOptions :: (String, Maybe Integer) -> [CommandParam] -> Annex [CommandParam]
-sshCachingOptions (host, port) opts = go =<< sshInfo (host, port)
+sshCachingOptions (host, port) opts = do
+ Annex.addCleanup SshCachingCleanup sshCleanup
+ go =<< sshInfo (host, port)
where
go (Nothing, params) = ret params
go (Just socketfile, params) = do
@@ -146,6 +148,7 @@ sshCleanup = go =<< sshCacheDir
[ Params "-O stop"
] ++ params ++ [Param "any"])
{ cwd = Just dir }
+ liftIO $ nukeFile socketfile
-- Cannot remove the lock file; other processes may
-- be waiting on our exclusive lock to use it.
diff --git a/CmdLine.hs b/CmdLine.hs
index a920898dc..a165b041a 100644
--- a/CmdLine.hs
+++ b/CmdLine.hs
@@ -26,7 +26,6 @@ import qualified Annex
import qualified Git
import qualified Git.AutoCorrect
import Annex.Content
-import Annex.Ssh
import Annex.Environment
import Command
import Types.Messages
@@ -107,4 +106,3 @@ shutdown nocommit = do
saveState nocommit
sequence_ =<< M.elems <$> Annex.getState Annex.cleanup
liftIO reapZombies -- zombies from long-running git processes
- sshCleanup -- ssh connection caching
diff --git a/Types/CleanupActions.hs b/Types/CleanupActions.hs
index decd2f873..498d5b4d7 100644
--- a/Types/CleanupActions.hs
+++ b/Types/CleanupActions.hs
@@ -13,4 +13,5 @@ data CleanupAction
= RemoteCleanup UUID
| StopHook UUID
| FsckCleanup
+ | SshCachingCleanup
deriving (Eq, Ord)