haskell-distributed/distributed-process — pull request #138 by facundominguez (2013-05-08 22:46:23+00:00)
Title: Fixes mask so unmask uses the correct state.

Otherwise the following program would yield False.

import Control.Distributed.Process
import Control.Distributed.Process.Node
import Control.Monad ( void )
import Network.Transport.TCP

main :: IO ()
main = do
Right transport <- createTransport "127.0.0.1" "8080"
defaultTCPParameters
lnid <- newLocalNode transport initRemoteTable
runProcess lnid $ do
pid <- getSelfPid
void $ mask $ \unmask -> do
spawnLocal $ void $ unmask getSelfPid >>= send pid
expect >>= liftIO . print . (pid/=)