on master help sign in
removing settingsServerName.
commit69cdd060d6d8996b1cfcbbdeafbe0e32d8563ec1 authorKazu Yamamoto <kazu@iij.ad.jp> dateWed 30 Oct 2013, 13:21 (13 years ago) parent89f70e1
5 files changed+31−44
warp/Network/Wai/Handler/Warp.hs−1 warp/Network/Wai/Handler/Warp/Response.hs+23−30 warp/Network/Wai/Handler/Warp/Run.hs+2−2 warp/Network/Wai/Handler/Warp/Settings.hs−8 warp/Network/Wai/Handler/Warp/Types.hs+6−3
warp/Network/Wai/Handler/Warp.hs−1
@@ -36,7 +36,6 @@ module Network.Wai.Handler.Warp (
3636 , settingsManager
3737 , settingsFdCacheDuration
3838 , settingsBeforeMainLoop
39− , settingsServerName
4039 -- * Data types
4140 , HostPreference (..)
4241 , Port
warp/Network/Wai/Handler/Warp/Response.hs+23−30
@@ -27,7 +27,6 @@ import Network.Wai
2727import Network.Wai.Handler.Warp.Header
2828import Network.Wai.Handler.Warp.ReadInt
2929import qualified Network.Wai.Handler.Warp.ResponseHeader as RH
30−import Network.Wai.Handler.Warp.Settings
3130import qualified Network.Wai.Handler.Warp.Timeout as T
3231import Network.Wai.Handler.Warp.Types
3332import Network.Wai.Internal
@@ -37,8 +36,7 @@ import qualified System.PosixCompat.Files as P
3736----------------------------------------------------------------
3837----------------------------------------------------------------
3938
40−sendResponse :: Settings
41− -> InternalInfo -> Request -> Connection
39+sendResponse :: InternalInfo -> Request -> Connection
4240 -> (forall a. IO a -> IO a) -- ^ restore masking state
4341 -> IndexedHeader
4442 -> Response
@@ -46,7 +44,7 @@ sendResponse :: Settings
4644
4745----------------------------------------------------------------
4846
49−sendResponse settings ii req conn restore reqidxhdr (ResponseFile s0 hs0 path mpart0) =
47+sendResponse ii req conn restore reqidxhdr (ResponseFile s0 hs0 path mpart0) =
5048 restore $ headerAndLength >>= sendResponse'
5149 where
5250 hs = addAccept hs0
@@ -87,12 +85,12 @@ sendResponse settings ii req conn restore reqidxhdr (ResponseFile s0 hs0 path mp
8785
8886 sendResponse' (Right (s, lengthyHeaders, beg, len))
8987 | hasBody s req = liftIO $ do
90− lheader <- composeHeader settings version s lengthyHeaders
88+ lheader <- composeHeader version s lengthyHeaders
9189 connSendFile conn path beg len (T.tickle th) [lheader]
9290 T.tickle th
9391 return isPersist
9492 | otherwise = liftIO $ do
95− composeHeader settings version s hs >>= connSendAll conn
93+ composeHeader version s hs >>= connSendAll conn
9694 T.tickle th
9795 return isPersist -- FIXME isKeepAlive?
9896 where
@@ -100,15 +98,15 @@ sendResponse settings ii req conn restore reqidxhdr (ResponseFile s0 hs0 path mp
10098 (isPersist,_) = infoFromRequest req reqidxhdr
10199
102100 sendResponse' (Left (_ :: SomeException)) =
103− sendResponse settings ii req conn restore reqidxhdr notFound
101+ sendResponse ii req conn restore reqidxhdr notFound
104102 where
105103 notFound = responseLBS H.status404 [(H.hContentType, "text/plain")] "File not found"
106104
107105----------------------------------------------------------------
108106
109−sendResponse settings ii req conn restore reqidxhdr (ResponseBuilder s hs b)
107+sendResponse ii req conn restore reqidxhdr (ResponseBuilder s hs b)
110108 | hasBody s req = restore $ do
111− header <- composeHeaderBuilder settings version s hs needsChunked
109+ header <- composeHeaderBuilder version s hs needsChunked
112110 let body
113111 | needsChunked = header `mappend` chunkedTransferEncoding b
114112 `mappend` chunkedTransferTerminator
@@ -118,7 +116,7 @@ sendResponse settings ii req conn restore reqidxhdr (ResponseBuilder s hs b)
118116 T.tickle th
119117 return isKeepAlive
120118 | otherwise = restore $ do
121− composeHeader settings version s hs >>= connSendAll conn
119+ composeHeader version s hs >>= connSendAll conn
122120 T.tickle th
123121 return isPersist
124122 where
@@ -129,14 +127,14 @@ sendResponse settings ii req conn restore reqidxhdr (ResponseBuilder s hs b)
129127
130128----------------------------------------------------------------
131129
132−sendResponse settings ii req conn restore reqidxhdr (ResponseSource s hs withBodyFlush)
130+sendResponse ii req conn restore reqidxhdr (ResponseSource s hs withBodyFlush)
133131 | hasBody s req = withBodyFlush $ \bodyFlush -> restore $ do
134− header <- liftIO $ composeHeaderBuilder settings version s hs needsChunked
132+ header <- liftIO $ composeHeaderBuilder version s hs needsChunked
135133 let src = CL.sourceList [header] `mappend` cbody bodyFlush
136134 src $$ builderToByteString =$ connSink conn th
137135 return isKeepAlive
138136 | otherwise = withBodyFlush $ \_bodyFlush -> restore $ do -- make sure any cleanup is called
139− composeHeader settings version s hs >>= connSendAll conn
137+ composeHeader version s hs >>= connSendAll conn
140138 T.tickle th
141139 return isPersist
142140 where
@@ -231,27 +229,22 @@ addAccept hdrs = (hAcceptRanges, "bytes") : hdrs
231229addEncodingHeader :: H.ResponseHeaders -> H.ResponseHeaders
232230addEncodingHeader hdrs = (hTransferEncoding, "chunked") : hdrs
233231
234−addServerHeader :: Settings -> H.ResponseHeaders -> H.ResponseHeaders
235−addServerHeader settings hdrs = case lookup hServer hdrs of
236− Nothing -> warpVersionHeader settings : hdrs
232+addServerHeader :: H.ResponseHeaders -> H.ResponseHeaders
233+addServerHeader hdrs = case lookup hServer hdrs of
234+ Nothing -> (hServer, defaultServerValue) : hdrs
237235 Just _ -> hdrs
238236
239−warpVersionHeader :: Settings -> H.Header
240−warpVersionHeader settings = (hServer, settingsServerName settings)
241−
242237----------------------------------------------------------------
243238
244−composeHeader :: Settings
245− -> H.HttpVersion
239+composeHeader :: H.HttpVersion
246240 -> H.Status
247241 -> H.ResponseHeaders
248242 -> IO ByteString
249−composeHeader settings version s hs =
250− RH.composeHeader version s
251− $ addServerHeader settings hs
252−
253−composeHeaderBuilder :: Settings -> H.HttpVersion -> H.Status -> H.ResponseHeaders -> Bool -> IO Builder
254−composeHeaderBuilder settings ver s hs True =
255− fromByteString <$> composeHeader settings ver s (addEncodingHeader hs)
256−composeHeaderBuilder settings ver s hs False =
257− fromByteString <$> composeHeader settings ver s hs
243+composeHeader version s hs =
244+ RH.composeHeader version s $ addServerHeader hs
245+
246+composeHeaderBuilder :: H.HttpVersion -> H.Status -> H.ResponseHeaders -> Bool -> IO Builder
247+composeHeaderBuilder ver s hs True =
248+ fromByteString <$> composeHeader ver s (addEncodingHeader hs)
249+composeHeaderBuilder ver s hs False =
250+ fromByteString <$> composeHeader ver s hs
warp/Network/Wai/Handler/Warp/Run.hs+2−2
@@ -218,7 +218,7 @@ serveConnection timeoutHandle settings ii app conn remoteHost' =
218218 th = threadHandle ii
219219
220220 send500 = void $ mask $ \restore ->
221− sendResponse settings ii dummyreq conn restore defaultIndexRequestHeader internalError
221+ sendResponse ii dummyreq conn restore defaultIndexRequestHeader internalError
222222
223223 dummyreq = defaultRequest { remoteHost = remoteHost' }
224224
@@ -237,7 +237,7 @@ serveConnection timeoutHandle settings ii app conn remoteHost' =
237237 keepAlive <- mask $ \restore -> do
238238 res <- restore $ app env
239239 liftIO $ T.resume th
240− sendResponse settings ii env conn restore idxhdr res
240+ sendResponse ii env conn restore idxhdr res
241241
242242 -- We just send a Response and it takes a time to
243243 -- receive a Request again. If we immediately call recv,
warp/Network/Wai/Handler/Warp/Settings.hs−8
@@ -2,7 +2,6 @@ module Network.Wai.Handler.Warp.Settings where
22
33import Control.Exception
44import qualified Data.ByteString as S
5−import qualified Data.ByteString.Char8 as S8
65import Data.Conduit
76import Data.Conduit.Network (HostPreference (HostIPv4))
87import GHC.IO.Exception (IOErrorType(..))
@@ -36,12 +35,6 @@ data Settings = Settings
3635 -- Default: do nothing.
3736 --
3837 -- Since 1.3.6
39− , settingsServerName :: S.ByteString
40− -- ^ Server name to be sent in the Server header.
41− --
42− -- Default: Warp\//version/
43− --
44− -- Since 1.3.8
4538 }
4639
4740-- | The default settings for the Warp server. See the individual settings for
@@ -58,7 +51,6 @@ defaultSettings = Settings
5851 , settingsManager = Nothing
5952 , settingsFdCacheDuration = 10
6053 , settingsBeforeMainLoop = return ()
61− , settingsServerName = S8.pack $ "Warp/" ++ warpVersion
6254 }
6355
6456defaultExceptionHandler :: Maybe Request -> SomeException -> IO ()
warp/Network/Wai/Handler/Warp/Types.hs+6−3
@@ -5,7 +5,7 @@
55module Network.Wai.Handler.Warp.Types where
66
77import Control.Exception
8−import Data.ByteString (ByteString)
8+import Data.ByteString.Char8 (ByteString, pack)
99import Data.Typeable (Typeable)
1010import Data.Version (showVersion)
1111import Network.HTTP.Types.Header
@@ -33,11 +33,14 @@ type HeaderValue = ByteString
3333hTransferEncoding :: HeaderName
3434hTransferEncoding = "Transfer-Encoding"
3535
36+hAcceptRanges :: HeaderName
37+hAcceptRanges = "Accept-Ranges"
38+
3639hServer :: HeaderName
3740hServer = "Server"
3841
39−hAcceptRanges :: HeaderName
40−hAcceptRanges = "Accept-Ranges"
42+defaultServerValue :: HeaderValue
43+defaultServerValue = pack $ "Warp/" ++ warpVersion
4144
4245----------------------------------------------------------------
4346