Merge pull request #13 from haskell-servant/manager-ioref

Use an `IORef` rather than a `MVar`.
This commit is contained in:
Julian Arni 2015-03-09 00:23:36 +01:00
commit 83aff1495b
2 changed files with 6 additions and 7 deletions

View File

@ -2,8 +2,9 @@
---
* Support content-type aware combinators and `Accept`/`Content-type` headers
* Added a lot of tests
* Support multiple concurrent threads
0.2.2
-----
* Add TLS support
* Add matrix parameter support
* Add matrix parameter support

View File

@ -3,13 +3,13 @@
module Servant.Common.Req where
import Control.Applicative
import Control.Concurrent
import Control.Exception
import Control.Monad
import Control.Monad.Catch (MonadThrow)
import Control.Monad.IO.Class
import Control.Monad.Trans.Either
import Data.ByteString.Lazy hiding (pack, filter, map, null)
import Data.IORef
import Data.String
import Data.String.Conversions
import Data.Proxy
@ -98,13 +98,11 @@ reqToRequest req (BaseUrl reqScheme reqHost reqPort) =
-- * performing requests
{-# NOINLINE __manager #-}
__manager :: MVar Manager
__manager = unsafePerformIO (newManager tlsManagerSettings >>= newMVar)
__manager :: IORef Manager
__manager = unsafePerformIO (newManager tlsManagerSettings >>= newIORef)
__withGlobalManager :: (Manager -> IO a) -> IO a
__withGlobalManager action = modifyMVar __manager $ \ manager -> do
result <- action manager
return (manager, result)
__withGlobalManager action = readIORef __manager >>= action
displayHttpRequest :: Method -> String