avoid leaving MVar empty
authorJoey Hess <joeyh@joeyh.name>
Tue, 27 Dec 2016 20:26:26 +0000 (16:26 -0400)
committerJoey Hess <joeyh@joeyh.name>
Tue, 27 Dec 2016 20:26:26 +0000 (16:26 -0400)
Something might want to observe the code multiple times.

Utility/MagicWormhole.hs

index e217dcdca6a6a698900e0aed61c7fb41ccf70825..3743f352cef6559b7f5730f7243c64f2122d5c4d 100644 (file)
@@ -78,7 +78,7 @@ mkCodeProducer :: IO CodeProducer
 mkCodeProducer = CodeProducer <$> newEmptyMVar
 
 waitCode :: CodeObserver -> IO Code
-waitCode (CodeObserver o) = takeMVar o
+waitCode (CodeObserver o) = readMVar o
 
 sendCode :: CodeProducer -> Code -> IO ()
 sendCode (CodeProducer p) = putMVar p
@@ -119,7 +119,7 @@ sendFile f (CodeObserver observer) ps = do
 -- read from the CodeProducer, and fed to wormhole on stdin.
 receiveFile :: FilePath -> CodeProducer -> WormHoleParams -> IO Bool
 receiveFile f (CodeProducer producer) ps = runWormHoleProcess p $ \hin _hout -> do
-       Code c <- takeMVar producer
+       Code c <- readMVar producer
        hPutStrLn hin c
        hFlush hin
        return True