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