on master help sign in
Fix double `Last-Modified` header on static file requests
commit8cc84636b6e38e4cf669eefc258e45221be24c5e authorMarcin Tolysz <tolysz@gmail.com> dateWed 31 Aug 2016, 14:46 (10 years ago) parent5063fd5
2 files changed+5−4
wai-app-static/Network/Wai/Application/Static.hs+1−1 warp/Network/Wai/Handler/Warp/File.hs+4−3
wai-app-static/Network/Wai/Application/Static.hs+1−1
@@ -187,7 +187,7 @@ serveFile StaticSettings {..} req file
187187 | mdate == lastSent -> return NotModified
188188
189189 -- Did not match, but we have a new last-modified header
190− (Just mdate, _) -> respond [("last-modified", formatHTTPDate mdate)]
190+ (Just mdate, _) -> respond [("Last-Modified", formatHTTPDate mdate)]
191191
192192 -- No modification time available
193193 (Nothing, _) -> respond []
warp/Network/Wai/Handler/Warp/File.hs+4−3
@@ -14,7 +14,7 @@ import Data.Array ((!))
1414import qualified Data.ByteString as B hiding (pack)
1515import qualified Data.ByteString.Char8 as B (pack, readInteger)
1616import Data.ByteString (ByteString)
17−import Data.Maybe (fromMaybe)
17+import Data.Maybe (fromMaybe, isJust)
1818import Network.HTTP.Date
1919import qualified Network.HTTP.Types as H
2020import qualified Network.HTTP.Types.Header as H
@@ -44,8 +44,9 @@ conditionalRequest :: I.FileInfo
4444 -> RspFileInfo
4545conditionalRequest finfo hs0 reqidx = case condition of
4646 nobody@(WithoutBody _) -> nobody
47− WithBody s _ off len -> let !hs = (H.hLastModified,date) :
48− addContentHeaders hs0 off len size
47+ WithBody s _ off len -> let !hs = if isJust (lookup H.hLastModified hs0)
48+ then addContentHeaders hs0 off len size
49+ else (H.hLastModified,date) : addContentHeaders hs0 off len size
4950 in WithBody s hs off len
5051 where
5152 !mtime = I.fileInfoTime finfo