on master help sign in
merging Server: if exsits.
df9afbaKazu Yamamoto
warp/Network/Wai/Handler/Warp.hs+12−3
@@ -108,6 +108,8 @@ import System.IO (hPutStrLn, stderr)
108import qualified Paths_warp
108import qualified Paths_warp
109import Data.Version (showVersion)
109import Data.Version (showVersion)
110
110
111+import Data.List (delete)
112+
111#if WINDOWS
113#if WINDOWS
112import Control.Concurrent (threadDelay)
114import Control.Concurrent (threadDelay)
113import qualified Control.Concurrent.MVar as MV
115import qualified Control.Concurrent.MVar as MV
@@ -305,7 +307,7 @@ headers !httpversion !status !responseHeaders !isChunked' = {-# SCC "headers" #-
305 `mappend` spaceBuilder
307 `mappend` spaceBuilder
306 `mappend` copyByteString (H.statusMessage status)
308 `mappend` copyByteString (H.statusMessage status)
307 `mappend` newlineBuilder
309 `mappend` newlineBuilder
308− !start' = foldl' responseHeaderToBuilder start (serverHeader : responseHeaders)
310+ !start' = foldl' responseHeaderToBuilder start (serverHeader responseHeaders)
309 !end = if isChunked'
311 !end = if isChunked'
310 then transferEncodingBuilder
312 then transferEncodingBuilder
311 else newlineBuilder
313 else newlineBuilder
@@ -578,5 +580,12 @@ withManager timeout f = do
578 man <- T.initialize timeout
580 man <- T.initialize timeout
579 f man
581 f man
580
582
581−serverHeader :: (CI.CI H.Ascii, ByteString)
583+serverHeader :: H.RequestHeaders -> H.RequestHeaders
584+serverHeader hdrs = case lookup key hdrs of
585+ Nothing -> server : hdrs
586+ Just svr -> servers svr : delete (key,svr) hdrs
587+ where
588+ key = "Server"
582−serverHeader = ("Server", B.pack $ "Warp/" ++ showVersion Paths_warp.version)
589+ ver = B.pack $ "Warp/" ++ showVersion Paths_warp.version
590+ server = (key, ver)
591+ servers svr = (key, S.concat [svr, " ", ver])