git.iko.soy/distributed-process
on master help sign in
Attempt to close connection in reconnect
17ad36aEdsko de Vries
distributed-process/src/Control/Distributed/Process/Internal/Node.hs+8−2
@@ -19,6 +19,7 @@ import qualified Network.Transport as NT
19 , defaultConnectHints
19 , defaultConnectHints
20 , connect
20 , connect
21 , Reliability(ReliableOrdered)
21 , Reliability(ReliableOrdered)
22+ , close
22 )
23 )
23import Control.Distributed.Process.Internal.Types
24import Control.Distributed.Process.Internal.Types
24 ( LocalNode(localState, localEndPoint, localCtrlChan)
25 ( LocalNode(localState, localEndPoint, localCtrlChan)
@@ -93,5 +94,10 @@ connBetween node from to = do
93
94
94reconnect :: LocalNode -> Identifier -> Identifier -> IO ()
95reconnect :: LocalNode -> Identifier -> Identifier -> IO ()
95reconnect node from to =
96reconnect node from to =
96− modifyMVar_ (localState node) $ return .
97+ modifyMVar_ (localState node) $ \st ->
98+ case st ^. localConnectionBetween from to of
99+ Nothing ->
100+ return st
101+ Just conn -> do
102+ NT.close conn
97− (localConnectionBetween from to ^= Nothing)
103+ return (localConnectionBetween from to ^= Nothing $ st)