Skip to content

Commit

Permalink
network-mux: fill completion var in job handler
Browse files Browse the repository at this point in the history
The mini-completion completion var is supposed to return the error
raised by the mini-protocol thread.  This patch fixes this.
  • Loading branch information
coot committed May 4, 2021
1 parent 5f32829 commit f3718b5
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion network-mux/src/Network/Mux.hs
Expand Up @@ -230,7 +230,7 @@ miniProtocolJob tracer egressQueue
}
(MiniProtocolAction protocolAction completionVar) =
JobPool.Job jobAction
(return . MiniProtocolException miniProtocolNum miniProtocolDirEnum)
jobHandler
(show miniProtocolNum ++ "." ++ show miniProtocolDirEnum)
where
jobAction = do
Expand All @@ -257,6 +257,15 @@ miniProtocolJob tracer egressQueue

return (MiniProtocolShutdown miniProtocolNum miniProtocolDirEnum)

jobHandler :: SomeException -> m MuxJobResult
jobHandler e = do
atomically $
putTMVar completionVar (Left e)
`orElse`
throwSTM (MuxError (MuxBlockedOnCompletionVar miniProtocolNum)
("when caught: " ++ show e))
return (MiniProtocolException miniProtocolNum miniProtocolDirEnum e)

miniProtocolDirEnum :: MiniProtocolDir
miniProtocolDirEnum = protocolDirEnum miniProtocolDir

Expand Down

0 comments on commit f3718b5

Please sign in to comment.