@@ -105,6 +105,8 @@ import Control.Monad (forever)
105105import qualified Network.HTTP.Types as H
106106import qualified Data.CaseInsensitive as CI
107107import System.IO (hPutStrLn, stderr)
108+import qualified Paths_warp
109+import Data.Version (showVersion)
108110
109111#if WINDOWS
110112import Control.Concurrent (threadDelay)
@@ -303,7 +305,7 @@ headers !httpversion !status !responseHeaders !isChunked' = {-# SCC "headers" #-
303305 `mappend` spaceBuilder
304306 `mappend` copyByteString (H.statusMessage status)
305307 `mappend` newlineBuilder
306− !start' = foldl' responseHeaderToBuilder start responseHeaders
308+ !start' = foldl' responseHeaderToBuilder start (serverHeader : responseHeaders)
307309 !end = if isChunked'
308310 then transferEncodingBuilder
309311 else newlineBuilder
@@ -574,3 +576,6 @@ withManager timeout f = do
574576 -- FIXME when stopManager is available, use it
575577 man <- T.initialize timeout
576578 f man
579+
580+serverHeader :: (CI.CI H.Ascii, ByteString)
581+serverHeader = ("Server", B.pack $ "Warp/" ++ showVersion Paths_warp.version)