summaryrefslogtreecommitdiff
path: root/Utility/Rsync.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Utility/Rsync.hs')
-rw-r--r--Utility/Rsync.hs9
1 files changed, 7 insertions, 2 deletions
diff --git a/Utility/Rsync.hs b/Utility/Rsync.hs
index f8e19eb57..68d27550c 100644
--- a/Utility/Rsync.hs
+++ b/Utility/Rsync.hs
@@ -53,8 +53,13 @@ rsync = boolSystem "rsync"
- The params must enable rsync's --progress mode for this to work.
-}
rsyncProgress :: (Integer -> IO ()) -> [CommandParam] -> IO Bool
-rsyncProgress callback params =
- withHandle StdoutHandle createProcessSuccess p (feedprogress 0 [])
+rsyncProgress callback params = do
+ r <- withHandle StdoutHandle createProcessSuccess p (feedprogress 0 [])
+ {- For an unknown reason, piping rsync's output like this does
+ - causes it to run a second ssh process, which it neglects to wait
+ - on. Reap the resulting zombie. -}
+ reapZombies
+ return r
where
p = proc "rsync" (toCommand params)
feedprogress prev buf h = do