warp 3.0.1.1 → 3.0.2
raw patch · 5 files changed
+31/−9 lines, 5 files
Files
- Network/Wai/Handler/Warp.hs +8/−0
- Network/Wai/Handler/Warp/Response.hs +7/−6
- Network/Wai/Handler/Warp/Run.hs +6/−2
- Network/Wai/Handler/Warp/Settings.hs +9/−0
- warp.cabal +1/−1
Network/Wai/Handler/Warp.hs view
@@ -40,6 +40,7 @@ , setBeforeMainLoop , setNoParsePath , setInstallShutdownHandler+ , setServerName -- ** Getters , getPort , getHost@@ -99,6 +100,7 @@ import Network.Wai (Request, Response) import Network.Socket (SockAddr) import Data.Streaming.Network (HostPreference)+import Data.ByteString (ByteString) -- | Port to listen on. Default value: 3000 --@@ -202,3 +204,9 @@ -- Since 3.0.1 setInstallShutdownHandler :: (IO () -> IO ()) -> Settings -> Settings setInstallShutdownHandler x y = y { settingsInstallShutdownHandler = x }++-- | Default server name if application does not set one.+--+-- Since 3.0.2+setServerName :: ByteString -> Settings -> Settings+setServerName x y = y { settingsServerName = x }
Network/Wai/Handler/Warp/Response.hs view
@@ -157,14 +157,15 @@ -- Typically, Transfer-Encoding: chunked is used. -- If Content-Length is specified, Transfer-Encoding: chunked is not used. -sendResponse :: Connection+sendResponse :: ByteString -- ^ default server value+ -> Connection -> InternalInfo -> Request -- ^ HTTP request. -> IndexedHeader -- ^ Indexed header of HTTP request. -> IO ByteString -- ^ source from client, for raw response -> Response -- ^ HTTP response including status code and response header. -> IO Bool -- ^ Returing True if the connection is persistent.-sendResponse conn ii req reqidxhdr src response = do+sendResponse defServer conn ii req reqidxhdr src response = do hs <- addServerAndDate hs0 if hasBody s req then do sendRsp conn ver s hs rsp@@ -181,7 +182,7 @@ rspidxhdr = indexResponseHeader hs0 th = threadHandle ii dc = dateCacher ii- addServerAndDate = addDate dc rspidxhdr . addServer rspidxhdr+ addServerAndDate = addDate dc rspidxhdr . addServer defServer rspidxhdr mRange = reqidxhdr ! idxRange reqinfo@(isPersist,_) = infoFromRequest req reqidxhdr (isKeepAlive, needsChunked) = infoFromResponse rspidxhdr reqinfo@@ -389,9 +390,9 @@ defaultServerValue :: HeaderValue defaultServerValue = B.pack $ "Warp/" ++ warpVersion -addServer :: IndexedHeader -> H.ResponseHeaders -> H.ResponseHeaders-addServer rspidxhdr hdrs = case rspidxhdr ! idxServer of- Nothing -> (hServer, defaultServerValue) : hdrs+addServer :: HeaderValue -> IndexedHeader -> H.ResponseHeaders -> H.ResponseHeaders+addServer defaultServerValue' rspidxhdr hdrs = case rspidxhdr ! idxServer of+ Nothing -> (hServer, defaultServerValue') : hdrs _ -> hdrs ----------------------------------------------------------------
Network/Wai/Handler/Warp/Run.hs view
@@ -284,7 +284,9 @@ sendErrorResponse istatus e = do status <- readIORef istatus when status $ void $- sendResponse conn ii dummyreq defaultIndexRequestHeader (return S.empty) (errorResponse e)+ sendResponse+ (settingsServerName settings)+ conn ii dummyreq defaultIndexRequestHeader (return S.empty) (errorResponse e) dummyreq = defaultRequest { remoteHost = addr } @@ -306,7 +308,9 @@ -- send more meaningful error messages to the user. -- However, it may affect performance. writeIORef istatus False- keepAlive <- sendResponse conn ii req idxhdr (readSource fromClient) res+ keepAlive <- sendResponse+ (settingsServerName settings)+ conn ii req idxhdr (readSource fromClient) res writeIORef keepAliveRef keepAlive return ResponseReceived keepAlive <- readIORef keepAliveRef
Network/Wai/Handler/Warp/Settings.hs view
@@ -18,6 +18,10 @@ import System.IO.Error (ioeGetErrorType) import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Encoding as TLE+import Data.ByteString (ByteString)+import qualified Data.ByteString.Char8 as S8+import Data.Version (showVersion)+import qualified Paths_warp -- | Various Warp server settings. This is purposely kept as an abstract data -- type so that new settings can be added without breaking backwards@@ -57,6 +61,10 @@ -- -- Since 2.0.3 , settingsInstallShutdownHandler :: IO () -> IO ()+ , settingsServerName :: ByteString+ -- ^ Default server name if application does not set one.+ --+ -- Since 3.0.2 } -- | The default settings for the Warp server. See the individual settings for@@ -75,6 +83,7 @@ , settingsBeforeMainLoop = return () , settingsNoParsePath = False , settingsInstallShutdownHandler = const $ return ()+ , settingsServerName = S8.pack $ "Warp/" ++ showVersion Paths_warp.version } -- | Apply the logic provided by 'defaultExceptionHandler' to determine if an
warp.cabal view
@@ -1,5 +1,5 @@ Name: warp-Version: 3.0.1.1+Version: 3.0.2 Synopsis: A fast, light-weight web server for WAI applications. License: MIT License-file: LICENSE