messageChan <- newChan
initRsp <- newEmptyMVar
+ mainThreadId <- myThreadId
+
let context = SessionContext serverIn absRootDir messageChan reqMap initRsp config caps
initState = SessionState (IdInt 0) mempty mempty 0 False Nothing
- launchServerHandler = forkIO $ void $ serverHandler serverOut context
+ launchServerHandler = forkIO $ catch (serverHandler serverOut context)
+ (throwTo mainThreadId :: SessionException -> IO ())
(result, _) <- bracket launchServerHandler killThread $
const $ runSession context initState session
| otherwise = Cyan
showPretty = B.unpack . encodePretty
+