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 +4/−0
- Network/HTTP/Conduit.hs +16/−10
- http-conduit.cabal +1/−1
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>