Update request map in listenServer
authorLuke Lau <luke_lau@icloud.com>
Fri, 28 Aug 2020 16:07:49 +0000 (17:07 +0100)
committerLuke Lau <luke_lau@icloud.com>
Fri, 9 Oct 2020 12:56:36 +0000 (13:56 +0100)
src/Language/Haskell/LSP/Test.hs

index 8dd252c80c332335d0b9b206a6ae62bb6123940f..80ea0e3b386f60560cabd1accbdbc79d1783ca16 100644 (file)
@@ -229,10 +229,10 @@ runSessionWithHandles' serverProc serverIn serverOut config' caps rootDir sessio
   listenServer serverOut context = do
     msgBytes <- getNextMessage serverOut
 
-    reqMap <- readMVar $ requestMap context
-
-    let msg = fst $ decodeFromServerMsg reqMap msgBytes
+    msg <- modifyMVar (requestMap context) $ \reqMap -> do
+      let (msg, newReqMap) = decodeFromServerMsg reqMap msgBytes
       writeChan (messageChan context) (ServerMessage msg)
+      pure (newReqMap, msg)
 
     case msg of
       (FromServerRsp SShutdown _) -> return ()