async exception safety
This commit is contained in:
parent
660d8d3a87
commit
a477f7253c
1 changed files with 7 additions and 5 deletions
12
P2P/IO.hs
12
P2P/IO.hs
|
@ -272,15 +272,17 @@ runRelay runner (RelayHandle hout) (RelayHandle hin) =
|
||||||
where
|
where
|
||||||
setup = do
|
setup = do
|
||||||
v <- newEmptyMVar
|
v <- newEmptyMVar
|
||||||
void $ async $ relayFeeder runner v hin
|
t1 <- async $ relayFeeder runner v hin
|
||||||
void $ async $ relayReader v hout
|
t2 <- async $ relayReader v hout
|
||||||
return v
|
return (v, t1, t2)
|
||||||
|
|
||||||
cleanup _ = do
|
cleanup (_, t1, t2) = do
|
||||||
hClose hin
|
hClose hin
|
||||||
hClose hout
|
hClose hout
|
||||||
|
cancel t1
|
||||||
|
cancel t2
|
||||||
|
|
||||||
go v = relayHelper runner v
|
go (v, _, _) = relayHelper runner v
|
||||||
|
|
||||||
runRelayService :: P2PConnection -> RunProto IO -> Service -> IO (Either ProtoFailure ())
|
runRelayService :: P2PConnection -> RunProto IO -> Service -> IO (Either ProtoFailure ())
|
||||||
runRelayService conn runner service =
|
runRelayService conn runner service =
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue