packages feed

warp 3.0.10.1 → 3.0.11

raw patch · 3 files changed

+17/−8 lines, 3 files

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 3.0.11++* Better HEAD support for files [#357](https://github.com/yesodweb/wai/pull/357)+ ## 3.0.10  * Fix [missing `IORef` tweak](https://github.com/yesodweb/wai/issues/351)
Network/Wai/Handler/Warp/Response.hs view
@@ -174,6 +174,7 @@ sendResponse defServer conn ii req reqidxhdr src response = do     hs <- addServerAndDate hs0     if hasBody s req then do+        -- HEAD comes here even if it does not have body.         sendRsp conn ver s hs rsp         T.tickle th         return ret@@ -192,8 +193,9 @@     mRange = reqidxhdr ! idxRange     reqinfo@(isPersist,_) = infoFromRequest req reqidxhdr     (isKeepAlive, needsChunked) = infoFromResponse rspidxhdr reqinfo+    isHead = requestMethod req == H.methodHead     rsp = case response of-        ResponseFile _ _ path mPart -> RspFile path mPart mRange (T.tickle th)+        ResponseFile _ _ path mPart -> RspFile path mPart mRange isHead (T.tickle th)         ResponseBuilder _ _ b       -> RspBuilder b needsChunked         ResponseStream _ _ fb       -> RspStream fb needsChunked th         ResponseRaw raw _           -> RspRaw raw src (T.tickle th)@@ -205,7 +207,7 @@  ---------------------------------------------------------------- -data Rsp = RspFile FilePath (Maybe FilePart) (Maybe HeaderValue) (IO ())+data Rsp = RspFile FilePath (Maybe FilePart) (Maybe HeaderValue) Bool (IO ())          | RspBuilder Builder Bool          | RspStream StreamingBody Bool T.Handle          | RspRaw (IO ByteString -> (ByteString -> IO ()) -> IO ()) (IO ByteString) (IO ())@@ -218,7 +220,7 @@         -> H.ResponseHeaders         -> Rsp         -> IO ()-sendRsp conn ver s0 hs0 (RspFile path mPart mRange hook) = do+sendRsp conn ver s0 hs0 (RspFile path mPart mRange isHead hook) = do     ex <- fileRange s0 hs path mPart mRange     case ex of         Left _ex ->@@ -226,9 +228,13 @@           print _ex >> #endif           sendRsp conn ver s2 hs2 (RspBuilder body True)-        Right (s, hs1, beg, len) | len >= 0 -> do-            lheader <- composeHeader ver s hs1-            connSendFile conn path beg len hook [lheader]+        Right (s, hs1, beg, len)+          | len >= 0 ->+            if isHead then+                sendRsp conn ver s hs1 (RspBuilder mempty False)+              else do+                lheader <- composeHeader ver s hs1+                connSendFile conn path beg len hook [lheader]           | otherwise -> do             sendRsp conn ver H.status416                 (filter (\(k, _) -> k /= "content-length") hs1)@@ -353,7 +359,6 @@ hasBody s req = sc /= 204              && sc /= 304              && sc >= 200-             && method /= H.methodHead   where     sc = H.statusCode s     method = requestMethod req
warp.cabal view
@@ -1,5 +1,5 @@ Name:                warp-Version:             3.0.10.1+Version:             3.0.11 Synopsis:            A fast, light-weight web server for WAI applications. License:             MIT License-file:        LICENSE