on master help sign in
serverHeader does not add Server: if already exists.

serverHeader was added by me when I uses Warp as a server only. This function adds the Server: field if not exists and appends values if exists. After start using it as a proxy server, it appeared that this feature is inconvenient. A proxy server should not add the Server: field according to specification. (It should add the Via: field.) So, let's not add the Server: field if exists. This works in many cases.

commit4b2bdd254742b874e8c6da1128f97dbda1e70b2a authorKazu Yamamoto <kazu@iij.ad.jp> dateTue 29 Nov 2011, 14:13 (15 years ago) parent576f703
1 file changed+1−4
warp/Network/Wai/Handler/Warp.hs+1−4
warp/Network/Wai/Handler/Warp.hs+1−4
@@ -111,8 +111,6 @@ import qualified Network.HTTP.Types as H
111111import qualified Data.CaseInsensitive as CI
112112import System.IO (hPutStrLn, stderr)
113113
114−import Data.List (delete)
115−
116114#if WINDOWS
117115import Control.Concurrent (threadDelay)
118116import qualified Control.Concurrent.MVar as MV
@@ -616,9 +614,8 @@ withManager timeout f = do
616614serverHeader :: H.RequestHeaders -> H.RequestHeaders
617615serverHeader hdrs = case lookup key hdrs of
618616 Nothing -> server : hdrs
619− Just svr -> servers svr : delete (key,svr) hdrs
617+ Just _ -> hdrs
620618 where
621619 key = "Server"
622620 ver = B.pack $ "Warp/" ++ warpVersion
623621 server = (key, ver)
624− servers svr = (key, S.concat [svr, " ", ver])