http-conduit-browser 1.7.0 → 1.7.1
raw patch · 2 files changed
+20/−2 lines, 2 files
Files
Network/HTTP/Conduit/Browser.hs view
@@ -188,12 +188,14 @@ where import qualified Data.ByteString as BS-import qualified Data.ByteString.Char8 as S8 (unpack)+import qualified Data.ByteString.Char8 as S8 import qualified Data.ByteString.Lazy as L import Control.Monad.State import Control.Exception import qualified Control.Exception.Lifted as LE import Data.Conduit+import qualified Data.Conduit.Binary as CB+import Data.Conduit.List (sinkNull) #if !MIN_VERSION_base(4,6,0) import Prelude hiding (catch) #endif@@ -205,6 +207,7 @@ import Data.CaseInsensitive (mk) import Data.ByteString.UTF8 (fromString) import Data.List (partition)+import qualified Data.String as IsString (fromString) import Web.Cookie (parseSetCookie) import Data.Maybe (catMaybes, fromMaybe) import qualified Data.Map as Map@@ -320,6 +323,21 @@ then do request''' <- case getRedirectedRequest request'' (responseHeaders response) code of Just a -> return a Nothing -> throw . UnparseableRedirect =<< (liftIO $ runResourceT $ lbsResponse response)+ -- Canibalised from Network.HTTP.Conduit, should be made visible there.+ -- Allow the original connection to return to the+ -- connection pool immediately by flushing the body.+ -- If the response body is too large, don't flush, but+ -- instead just close the connection.+ let maxFlush = 1024+ readMay bs =+ case S8.readInt bs of+ Just (i, bs') | BS.null bs' -> Just i+ _ -> Nothing+ sink =+ case lookup (IsString.fromString "content-length") (responseHeaders res) >>= readMay of+ Just i | i > maxFlush -> return ()+ _ -> CB.isolate maxFlush =$ sinkNull+ liftResourceT $ responseBody res $$+- sink runRedirectionChain request''' (redirect_count - 1) (res:ress) else return res applyAuthorities auths request' = case auths request' of
http-conduit-browser.cabal view
@@ -1,5 +1,5 @@ name: http-conduit-browser-version: 1.7.0+version: 1.7.1 license: BSD3 license-file: LICENSE author: Myles C. Maxfield <myles.maxfield@gmail.com>