on master help sign in
Merge pull request #13 from haskell-servant/manager-ioref

Use an `IORef` rather than a `MVar`.

commit83aff1495b0e53b053bca5eaa9cc2a2589b46819 authorJulian Arni <jkarni@gmail.com> dateMon 9 Mar 2015, 00:23 (12 years ago) parent1af0d7b449b375
2 files changed+6−7
CHANGELOG.md+2−1 src/Servant/Common/Req.hs+4−6
CHANGELOG.md+2−1
@@ -2,8 +2,9 @@
22---
33* Support content-type aware combinators and `Accept`/`Content-type` headers
44* Added a lot of tests
5+* Support multiple concurrent threads
56
670.2.2
78-----
89* Add TLS support
9−* Add matrix parameter support
10+* Add matrix parameter support
src/Servant/Common/Req.hs+4−6
@@ -3,13 +3,13 @@
33module Servant.Common.Req where
44
55import Control.Applicative
6−import Control.Concurrent
76import Control.Exception
87import Control.Monad
98import Control.Monad.Catch (MonadThrow)
109import Control.Monad.IO.Class
1110import Control.Monad.Trans.Either
1211import Data.ByteString.Lazy hiding (pack, filter, map, null)
12+import Data.IORef
1313import Data.String
1414import Data.String.Conversions
1515import Data.Proxy
@@ -98,13 +98,11 @@ reqToRequest req (BaseUrl reqScheme reqHost reqPort) =
9898-- * performing requests
9999
100100{-# NOINLINE __manager #-}
101−__manager :: MVar Manager
102−__manager = unsafePerformIO (newManager tlsManagerSettings >>= newMVar)
101+__manager :: IORef Manager
102+__manager = unsafePerformIO (newManager tlsManagerSettings >>= newIORef)
103103
104104__withGlobalManager :: (Manager -> IO a) -> IO a
105−__withGlobalManager action = modifyMVar __manager $ \ manager -> do
106− result <- action manager
107− return (manager, result)
105+__withGlobalManager action = readIORef __manager >>= action
108106
109107
110108displayHttpRequest :: Method -> String