packages feed

http-client 0.7.8 → 0.7.9

raw patch · 3 files changed

+24/−3 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Changelog for http-client +## 0.7.9++* Exceptions from streamed request body now cause the request to fail. Previously they were+  routed through onRequestBodyException and, by default, the IOExceptions were discarded.+ ## 0.7.8  * Include the original `Request` in the `Response`. Expose it via `getOriginalRequest`.
Network/HTTP/Client/Request.hs view
@@ -415,6 +415,19 @@      && ("content-encoding", "gzip") `elem` hs'      && decompress req (fromMaybe "" $ lookup "content-type" hs') +data EncapsulatedPopperException = EncapsulatedPopperException E.SomeException+    deriving (Show)+instance E.Exception EncapsulatedPopperException++-- | Encapsulate a thrown exception into a custom type+--+-- During streamed body sending, both the Popper and the connection may throw IO exceptions;+-- however, we don't want to route the Popper exceptions through onRequestBodyException.+-- https://github.com/snoyberg/http-client/issues/469+encapsulatePopperException :: IO a -> IO a+encapsulatePopperException action =+    action `E.catch` (\(ex :: E.SomeException) -> E.throwIO (EncapsulatedPopperException ex))+ requestBuilder :: Request -> Connection -> IO (Maybe (IO ())) requestBuilder req Connection {..} = do     (contentLength, sendNow, sendLater) <- toTriple (requestBody req)@@ -423,7 +436,10 @@         else sendNow >> return Nothing   where     expectContinue   = Just "100-continue" == lookup "Expect" (requestHeaders req)-    checkBadSend f   = f `E.catch` onRequestBodyException req+    checkBadSend f   = f `E.catches` [+        E.Handler (\(EncapsulatedPopperException ex) -> throwIO ex)+      , E.Handler (onRequestBodyException req)+      ]     writeBuilder     = toByteStringIO connectionWrite     writeHeadersWith contentLength = writeBuilder . (builder contentLength `Data.Monoid.mappend`)     flushHeaders contentLength     = writeHeadersWith contentLength flush@@ -464,7 +480,7 @@         withStream (loop 0)       where         loop !n stream = do-            bs <- stream+            bs <- encapsulatePopperException stream             if S.null bs                 then case mlen of                     -- If stream is chunked, no length argument
http-client.cabal view
@@ -1,5 +1,5 @@ name:                http-client-version:             0.7.8+version:             0.7.9 synopsis:            An HTTP client engine description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/http-client>. homepage:            https://github.com/snoyberg/http-client