on master help sign in
settingsIntercept lives in IO
commit803836c780c34655ff28a31ea90ee5a0524a8ed8 authorMichael Snoyman <michael@snoyman.com> dateWed 5 Mar 2014, 08:21 (13 years ago) parentbf46838
2 files changed+4−3
warp/Network/Wai/Handler/Warp/Run.hs+2−1 warp/Network/Wai/Handler/Warp/Settings.hs+2−2
warp/Network/Wai/Handler/Warp/Run.hs+2−1
@@ -239,7 +239,8 @@ serveConnection conn ii addr settings app = do
239239
240240 recvSendLoop istatus fromClient = do
241241 (req, idxhdr, getSource) <- recvRequest settings conn ii addr fromClient
242− case settingsIntercept settings req of
242+ intercept' <- settingsIntercept settings req
243+ case intercept' of
243244 Nothing -> do
244245 -- Let the application run for as long as it wants
245246 T.pause th
warp/Network/Wai/Handler/Warp/Settings.hs+2−2
@@ -35,7 +35,7 @@ data Settings = Settings
3535 , settingsOnOpen :: SockAddr -> IO Bool -- ^ What to do when a connection is open. When 'False' is returned, the connection is closed immediately. Otherwise, the connection is going on. Default: always returns 'True'.
3636 , settingsOnClose :: SockAddr -> IO () -- ^ What to do when a connection is close. Default: do nothing.
3737 , settingsTimeout :: Int -- ^ Timeout value in seconds. Default value: 30
38− , settingsIntercept :: Request -> Maybe (Source IO S.ByteString -> Connection -> IO ())
38+ , settingsIntercept :: Request -> IO (Maybe (Source IO S.ByteString -> Connection -> IO ()))
3939 , settingsManager :: Maybe Manager -- ^ Use an existing timeout manager instead of spawning a new one. If used, 'settingsTimeout' is ignored. Default is 'Nothing'
4040 , settingsFdCacheDuration :: Int -- ^ Cache duratoin time of file descriptors in seconds. 0 means that the cache mechanism is not used. Default value: 10
4141 , settingsBeforeMainLoop :: IO ()
@@ -67,7 +67,7 @@ defaultSettings = Settings
6767 , settingsOnOpen = const $ return True
6868 , settingsOnClose = const $ return ()
6969 , settingsTimeout = 30
70− , settingsIntercept = const Nothing
70+ , settingsIntercept = const (return Nothing)
7171 , settingsManager = Nothing
7272 , settingsFdCacheDuration = 10
7373 , settingsBeforeMainLoop = return ()