packages feed

http-conduit 2.3.8.3 → 2.3.9

raw patch · 3 files changed

+21/−11 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Network.HTTP.Client.Conduit: managerSetMaxHeaderLength :: Int -> ManagerSettings -> ManagerSettings
+ Network.HTTP.Conduit: responseEarlyHints :: Response body -> ResponseHeaders
- Network.HTTP.Client.Conduit: class HasHttpManager a
+ Network.HTTP.Client.Conduit: class () => HasHttpManager a
- Network.HTTP.Client.Conduit: data Cookie
+ Network.HTTP.Client.Conduit: data () => Cookie
- Network.HTTP.Client.Conduit: data CookieJar
+ Network.HTTP.Client.Conduit: data () => CookieJar
- Network.HTTP.Client.Conduit: data HistoriedResponse body
+ Network.HTTP.Client.Conduit: data () => HistoriedResponse body
- Network.HTTP.Client.Conduit: data HttpException
+ Network.HTTP.Client.Conduit: data () => HttpException
- Network.HTTP.Client.Conduit: data HttpExceptionContent
+ Network.HTTP.Client.Conduit: data () => HttpExceptionContent
- Network.HTTP.Client.Conduit: data Manager
+ Network.HTTP.Client.Conduit: data () => Manager
- Network.HTTP.Client.Conduit: data ManagerSettings
+ Network.HTTP.Client.Conduit: data () => ManagerSettings
- Network.HTTP.Client.Conduit: data Proxy
+ Network.HTTP.Client.Conduit: data () => Proxy
- Network.HTTP.Client.Conduit: data ProxyOverride
+ Network.HTTP.Client.Conduit: data () => ProxyOverride
- Network.HTTP.Client.Conduit: data Request
+ Network.HTTP.Client.Conduit: data () => Request
- Network.HTTP.Client.Conduit: data RequestBody
+ Network.HTTP.Client.Conduit: data () => RequestBody
- Network.HTTP.Client.Conduit: data Response body
+ Network.HTTP.Client.Conduit: data () => Response body
- Network.HTTP.Client.Conduit: data ResponseTimeout
+ Network.HTTP.Client.Conduit: data () => ResponseTimeout
- Network.HTTP.Client.Conduit: data StreamFileStatus
+ Network.HTTP.Client.Conduit: data () => StreamFileStatus
- Network.HTTP.Conduit: data Cookie
+ Network.HTTP.Conduit: data () => Cookie
- Network.HTTP.Conduit: data CookieJar
+ Network.HTTP.Conduit: data () => CookieJar
- Network.HTTP.Conduit: data HttpException
+ Network.HTTP.Conduit: data () => HttpException
- Network.HTTP.Conduit: data HttpExceptionContent
+ Network.HTTP.Conduit: data () => HttpExceptionContent
- Network.HTTP.Conduit: data Manager
+ Network.HTTP.Conduit: data () => Manager
- Network.HTTP.Conduit: data ManagerSettings
+ Network.HTTP.Conduit: data () => ManagerSettings
- Network.HTTP.Conduit: data Proxy
+ Network.HTTP.Conduit: data () => Proxy
- Network.HTTP.Conduit: data Request
+ Network.HTTP.Conduit: data () => Request
- Network.HTTP.Conduit: data RequestBody
+ Network.HTTP.Conduit: data () => RequestBody
- Network.HTTP.Conduit: data Response body
+ Network.HTTP.Conduit: data () => Response body
- Network.HTTP.Conduit: data ResponseTimeout
+ Network.HTTP.Conduit: data () => ResponseTimeout
- Network.HTTP.Conduit: getRedirectedRequest :: Request -> ResponseHeaders -> CookieJar -> Int -> Maybe Request
+ Network.HTTP.Conduit: getRedirectedRequest :: Request -> Request -> ResponseHeaders -> CookieJar -> Int -> Maybe Request
- Network.HTTP.Simple: data HttpException
+ Network.HTTP.Simple: data () => HttpException
- Network.HTTP.Simple: data Proxy
+ Network.HTTP.Simple: data () => Proxy
- Network.HTTP.Simple: data Request
+ Network.HTTP.Simple: data () => Request
- Network.HTTP.Simple: data Response body
+ Network.HTTP.Simple: data () => Response body

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # ChangeLog for http-conduit +## 2.3.9++* Fix space leaks when closing responses [#539](https://github.com/snoyberg/http-client/pull/539)+ ## 2.3.8.3  * aeson 2.2 support [#512](https://github.com/snoyberg/http-client/pull/512)
Network/HTTP/Conduit.hs view
@@ -179,6 +179,7 @@     , responseHeaders     , responseBody     , responseCookieJar+    , responseEarlyHints       -- * Manager     , Manager     , newManager@@ -232,7 +233,7 @@ import           Control.Monad.IO.Unlift      (MonadIO (liftIO)) import           Control.Monad.Trans.Resource -import qualified Network.HTTP.Client          as Client (httpLbs, responseOpen, responseClose)+import qualified Network.HTTP.Client          as Client (httpLbs, responseOpen) import qualified Network.HTTP.Client          as HC import qualified Network.HTTP.Client.Conduit  as HCC import           Network.HTTP.Client.Internal (createCookieJar,@@ -243,9 +244,8 @@                                                managerTlsConnection, newManager) import           Network.HTTP.Client          (parseUrl, parseUrlThrow, urlEncodedBody, applyBasicAuth,                                                defaultRequest, parseRequest, parseRequest_)-import           Network.HTTP.Client.Internal (addProxy, alwaysDecompress,-                                               browserDecompress)-import           Network.HTTP.Client.Internal (getRedirectedRequest)+import           Network.HTTP.Client.Internal (ResponseClose (..), addProxy, alwaysDecompress,+                                               browserDecompress, getRedirectedRequest) import           Network.HTTP.Client.TLS      (mkManagerSettings,                                                tlsManagerSettings) import           Network.HTTP.Client.Internal (Cookie (..), CookieJar (..),@@ -315,12 +315,18 @@      => Request      -> Manager      -> m (Response (ConduitM i S.ByteString m ()))-http req man = do-    (key, res) <- allocate (Client.responseOpen req man) Client.responseClose-    return res { responseBody = do-                   HCC.bodyReaderSource $ responseBody res-                   release key-               }+http req man = resourceMask $ \_ -> do+    res <- liftIO $ Client.responseOpen req man+    -- Move the cleanup action for the response into `ResourceT` so+    -- that we can release it from the `ReleaseMap` as soon as the+    -- response is closed or the body is consumed.+    let ResponseClose cleanup = responseClose' res+    key <- register cleanup+    pure res { responseClose' = ResponseClose $ release key+             , responseBody = do+                 HCC.bodyReaderSource $ responseBody res+                 release key+             }  requestBodySource :: Int64 -> ConduitM () S.ByteString (ResourceT IO) () -> RequestBody requestBodySource size = RequestBodyStream size . srcToPopper
http-conduit.cabal view
@@ -1,6 +1,6 @@ cabal-version:   >= 1.10 name:            http-conduit-version:         2.3.8.3+version:         2.3.9 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>