on master help sign in
Merge pull request #8 from kazu-yamamoto/master

Merging Server: if exists.

commit038a43e4b6541666613a0e7ee38a7e2ceb269440 authorMichael Snoyman <michael@snoyman.com> dateMon 29 Aug 2011, 03:41 (15 years ago) parentb6b5675df9afba
1 file changed+12−3
warp/Network/Wai/Handler/Warp.hs+12−3
warp/Network/Wai/Handler/Warp.hs+12−3
@@ -108,6 +108,8 @@ import System.IO (hPutStrLn, stderr)
108108import qualified Paths_warp
109109import Data.Version (showVersion)
110110
111+import Data.List (delete)
112+
111113#if WINDOWS
112114import Control.Concurrent (threadDelay)
113115import qualified Control.Concurrent.MVar as MV
@@ -305,7 +307,7 @@ headers !httpversion !status !responseHeaders !isChunked' = {-# SCC "headers" #-
305307 `mappend` spaceBuilder
306308 `mappend` copyByteString (H.statusMessage status)
307309 `mappend` newlineBuilder
308− !start' = foldl' responseHeaderToBuilder start (serverHeader : responseHeaders)
310+ !start' = foldl' responseHeaderToBuilder start (serverHeader responseHeaders)
309311 !end = if isChunked'
310312 then transferEncodingBuilder
311313 else newlineBuilder
@@ -578,5 +580,12 @@ withManager timeout f = do
578580 man <- T.initialize timeout
579581 f man
580582
581−serverHeader :: (CI.CI H.Ascii, ByteString)
582−serverHeader = ("Server", B.pack $ "Warp/" ++ showVersion Paths_warp.version)
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"
589+ ver = B.pack $ "Warp/" ++ showVersion Paths_warp.version
590+ server = (key, ver)
591+ servers svr = (key, S.concat [svr, " ", ver])