git.iko.soy/typeable/servant
on master help sign in
Do one atomic update to the cookie jar for all request and responses.
8490ccbMichael Dunn
servant-client/src/Servant/Client/Internal/HttpClient.hs+3−2
@@ -184,8 +184,9 @@ performRequest req = do
184 updateWithResponseCookies cj responses = do
184 updateWithResponseCookies cj responses = do
185 now <- getCurrentTime
185 now <- getCurrentTime
186 bss <- Client.brConsume $ Client.responseBody fRes
186 bss <- Client.brConsume $ Client.responseBody fRes
187− let fRes' = fRes { Client.responseBody = BSL.fromChunks bss }
187+ let fRes' = fRes { Client.responseBody = BSL.fromChunks bss }
188− mapM_ (atomically . updateCookieJar now) $ Client.hrRedirects responses <> [(fReq, fRes')]
188+ allResponses = Client.hrRedirects responses <> [(fReq, fRes')]
189+ atomically $ mapM_ (updateCookieJar now) allResponses
189 return fRes'
190 return fRes'
190 where
191 where
191 updateCookieJar :: UTCTime -> (Client.Request, Client.Response BSL.ByteString) -> STM ()
192 updateCookieJar :: UTCTime -> (Client.Request, Client.Response BSL.ByteString) -> STM ()