Update request map in listenServer
[lsp-test.git] / 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 ()