packages feed

warp 3.2.11.2 → 3.2.12

raw patch · 6 files changed

+70/−6 lines, 6 files

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 3.2.12++* If an empty string is set by setServerName, the Server header is not included in response headers [#619](https://github.com/yesodweb/wai/issues/619)+ ## 3.2.11.2  * Don't throw exceptions when closing a keep-alive connection
Network/Wai/Handler/Warp.hs view
@@ -302,7 +302,10 @@ setInstallShutdownHandler :: (IO () -> IO ()) -> Settings -> Settings setInstallShutdownHandler x y = y { settingsInstallShutdownHandler = x } --- | Default server name if application does not set one.+-- | Default server name to be sent as the \"Server:\" header+--   if an application does not set one.+--   If an empty string is set, the \"Server:\" header is not sent.+--   This is true even if an application set one. -- -- Since 3.0.2 setServerName :: ByteString -> Settings -> Settings
Network/Wai/Handler/Warp/HTTP2/HPACK.hs view
@@ -7,6 +7,7 @@   , hpackDecodeHeader   , just   , addNecessaryHeaders+  , addHeader -- testing   ) where  import qualified Control.Exception as E@@ -27,9 +28,12 @@  {-# 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 v tbl ths = case getHeaderValue t tbl of     Nothing -> (t,v) : ths-    Just _  -> ths+    _       -> ths  addNecessaryHeaders :: Context                     -> Rspn
Network/Wai/Handler/Warp/Response.hs view
@@ -11,6 +11,7 @@   , warpVersion   , hasBody   , replaceHeader+  , addServer -- testing   ) where  #ifndef MIN_VERSION_base@@ -429,7 +430,11 @@ warpVersion :: String warpVersion = showVersion Paths_warp.version +{-# INLINE addServer #-} addServer :: HeaderValue -> IndexedHeader -> H.ResponseHeaders -> H.ResponseHeaders+addServer "" rspidxhdr hdrs = case rspidxhdr ! fromEnum ResServer of+    Nothing -> hdrs+    _       -> filter ((/= H.hServer) . fst) hdrs addServer serverName rspidxhdr hdrs = case rspidxhdr ! fromEnum ResServer of     Nothing -> (H.hServer, serverName) : hdrs     _       -> hdrs
test/ResponseHeaderSpec.hs view
@@ -5,15 +5,63 @@ import Data.ByteString import qualified Network.HTTP.Types as H import Network.Wai.Handler.Warp.ResponseHeader+import Network.Wai.Handler.Warp.Response+import Network.Wai.Handler.Warp.Header+import Network.Wai.Handler.Warp.HTTP2.HPACK+import Network.HPACK+import Network.HPACK.Token import Test.Hspec  main :: IO () main = hspec spec  spec :: Spec-spec = describe "composeHeader" $ do-    it "composes a HTTP header" $-        composeHeader H.http11 H.ok200 headers `shouldReturn` composedHeader+spec = do+    describe "composeHeader" $ do+        it "composes a HTTP header" $+            composeHeader H.http11 H.ok200 headers `shouldReturn` composedHeader+    describe "addServer" $ do+        it "adds Server if not exist" $ do+            let hdrs = []+                rspidxhdr = indexResponseHeader hdrs+            addServer "MyServer" rspidxhdr hdrs `shouldBe` [("Server","MyServer")]+        it "does not add Server if exists" $ do+            let hdrs = [("Server","MyServer")]+                rspidxhdr = indexResponseHeader hdrs+            addServer "MyServer2" rspidxhdr hdrs `shouldBe` hdrs+        it "does not add Server if empty" $ do+            let hdrs = []+                rspidxhdr = indexResponseHeader hdrs+            addServer "" rspidxhdr hdrs `shouldBe` hdrs+        it "deletes Server " $ do+            let hdrs = [("Server","MyServer")]+                rspidxhdr = indexResponseHeader hdrs+            addServer "" rspidxhdr hdrs `shouldBe` []+    describe "addHeader" $ do+        it "adds Server if not exist" $ do+            let v = "MyServer"+                hdrs = []+                hdrs1 = [("Server",v)]+            (thl, vt) <- toHeaderTable hdrs+            (thl1, _) <- toHeaderTable hdrs1+            addHeader tokenServer v vt thl `shouldBe` thl1+        it "does not add Server if exists" $ do+            let v = "MyServer2"+                hdrs = [("Server","MyServer")]+            (thl, vt) <- toHeaderTable hdrs+            addHeader tokenServer v vt thl `shouldBe` thl+        it "does not add Server if empty" $ do+            let v = ""+                hdrs = []+            (thl, vt) <- toHeaderTable hdrs+            addHeader tokenServer v vt thl `shouldBe` thl+        it "deletes Server " $ do+            let v = ""+                hdrs = [("Server","MyServer")]+                hdrs1 = []+            (thl, vt) <- toHeaderTable hdrs+            (thl1, _) <- toHeaderTable hdrs1+            addHeader tokenServer v vt thl `shouldBe` thl1  headers :: H.ResponseHeaders headers = [
warp.cabal view
@@ -1,5 +1,5 @@ Name:                warp-Version:             3.2.11.2+Version:             3.2.12 Synopsis:            A fast, light-weight web server for WAI applications. License:             MIT License-file:        LICENSE