on master help sign in
settingsManager
commit4ed7c5ec22af0aee9a67a70f4aaa970a061b7fe5 authorMichael Snoyman <michael@snoyman.com> dateThu 6 Oct 2011, 09:50 (15 years ago) parent3fe2877
1 file changed+6−1
warp/Network/Wai/Handler/Warp.hs+6−1
warp/Network/Wai/Handler/Warp.hs+6−1
@@ -35,6 +35,7 @@ module Network.Wai.Handler.Warp
3535 , settingsOnException
3636 , settingsTimeout
3737 , settingsIntercept
38+ , settingsManager
3839 -- * Datatypes
3940 , Port
4041 , InvalidRequest (..)
@@ -48,6 +49,7 @@ module Network.Wai.Handler.Warp
4849 , enumSocket
4950 , pause
5051 , resume
52+ , T.cancel
5153#if TEST
5254 , takeHeaders
5355 , readInt
@@ -178,7 +180,8 @@ runSettingsSocket :: Settings -> Socket -> Application -> IO ()
178180runSettingsSocket set socket app = do
179181 let onE = settingsOnException set
180182 port = settingsPort set
181− tm <- T.initialize $ settingsTimeout set * 1000000
183+ tm <- maybe (T.initialize $ settingsTimeout set * 1000000) return
184+ $ settingsManager set
182185 forever $ do
183186 (conn, sa) <- accept socket
184187 _ <- forkIO $ do
@@ -483,6 +486,7 @@ data Settings = Settings
483486 , settingsOnException :: SomeException -> IO () -- ^ What to do with exceptions thrown by either the application or server. Default: ignore server-generated exceptions (see 'InvalidRequest') and print application-generated applications to stderr.
484487 , settingsTimeout :: Int -- ^ Timeout value in seconds. Default value: 30
485488 , settingsIntercept :: Request -> Maybe (Socket -> E.Iteratee S.ByteString IO ())
489+ , settingsManager :: Maybe Manager -- ^ Use an existing timeout manager instead of spawning a new one. If used, 'settingsTimeout' is ignored. Default is 'Nothing'
486490 }
487491
488492-- | The default settings for the Warp server. See the individual settings for
@@ -500,6 +504,7 @@ defaultSettings = Settings
500504 else return ()
501505 , settingsTimeout = 30
502506 , settingsIntercept = const Nothing
507+ , settingsManager = Nothing
503508 }
504509 where
505510 go :: InvalidRequest -> IO ()