packages feed

warp 3.2.24 → 3.2.25

raw patch · 5 files changed

+43/−14 lines, 5 files

Files

ChangeLog.md view
@@ -1,3 +1,9 @@+## 3.2.25++* Removing Connection: and Transfer-Encoding: from HTTP/2+  response header+  [#707](https://github.com/yesodweb/wai/pull/707)+ ## 3.2.24  * Fix HTTP2 unwanted GoAways on late WindowUpdate frames.
Network/Wai/Handler/Warp/HTTP2/HPACK.hs view
@@ -6,8 +6,9 @@   , hpackEncodeHeaderLoop   , hpackDecodeHeader   , just-  , addNecessaryHeaders+  , fixHeaders   , addHeader -- testing+  , deleteUnnecessaryHeaders   ) where  import qualified Control.Exception as E@@ -28,19 +29,18 @@  {-# INLINE addHeader #-} addHeader :: Token -> ByteString -> ValueTable -> TokenHeaderList -> TokenHeaderList-addHeader t "" tbl ths = case getHeaderValue t tbl of-    Nothing -> ths-    _       -> filter ((/= tokenServer) . fst) ths+addHeader t "" _ ths+  | t == tokenServer  = filter ((/= tokenServer) . fst) ths addHeader t v tbl ths = case getHeaderValue t tbl of     Nothing -> (t,v) : ths     _       -> ths -addNecessaryHeaders :: Context-                    -> Rspn-                    -> InternalInfo-                    -> S.Settings-                    -> IO TokenHeaderList-addNecessaryHeaders Context{..} rspn ii settings = do+fixHeaders :: Context+           -> Rspn+           -> InternalInfo+           -> S.Settings+           -> IO TokenHeaderList+fixHeaders Context{..} rspn ii settings = do     date <- getDate ii     let !s = rspnStatus rspn         !status = packStatus s@@ -49,7 +49,25 @@         !ths1 = addHeader tokenServer defServer tbl ths0         !ths2 = addHeader tokenDate date tbl ths1         !ths3 = (tokenStatus, status) : ths2-    return ths3+        !ths4 = deleteUnnecessaryHeaders ths3 tbl+    return ths4++deleteUnnecessaryHeaders :: TokenHeaderList -> ValueTable -> TokenHeaderList+deleteUnnecessaryHeaders htl0 tbl0 = loop headersToBeRemoved htl0+  where+    loop [] thl = thl+    loop (t:ts) thl = case getHeaderValue t tbl0 of+      Nothing -> thl+      _       -> let !thl' = filter ((/= t) . fst) thl+                 in loop ts thl'++headersToBeRemoved :: [Token]+headersToBeRemoved = [ tokenConnection+                     , tokenTransferEncoding+                     -- Keep-Alive:+                     -- Proxy-Connection:+                     -- Upgrade:+                     ]  ---------------------------------------------------------------- 
Network/Wai/Handler/Warp/HTTP2/Sender.hs view
@@ -132,7 +132,7 @@             !endOfStream = case rspn of                 RspnNobody _ _ -> True                 _              -> False-        ths <- addNecessaryHeaders ctx rspn ii settings+        ths <- fixHeaders ctx rspn ii settings         kvlen <- headerContinue sid ths endOfStream off0         off <- sendHeadersIfNecessary $ off0 + frameHeaderLength + kvlen         case rspn of
test/ResponseHeaderSpec.hs view
@@ -55,13 +55,18 @@                 hdrs = []             (thl, vt) <- toHeaderTable hdrs             addHeader tokenServer v vt thl `shouldBe` thl-        it "deletes Server " $ do+        it "deletes Server" $ do             let v = ""                 hdrs = [("Server","MyServer")]                 hdrs1 = []             (thl, vt) <- toHeaderTable hdrs             (thl1, _) <- toHeaderTable hdrs1             addHeader tokenServer v vt thl `shouldBe` thl1+        it "keeps Server" $ do+            let v = ""+                hdrs = [("Server","MyServer"),("Content-Type","Text/HTML")]+            (thl, vt) <- toHeaderTable hdrs+            addHeader tokenContentType v vt thl `shouldBe` thl  headers :: H.ResponseHeaders headers = [
warp.cabal view
@@ -1,5 +1,5 @@ Name:                warp-Version:             3.2.24+Version:             3.2.25 Synopsis:            A fast, light-weight web server for WAI applications. License:             MIT License-file:        LICENSE