on master help sign in
Merge pull request #227 from nikomi/onopen

Add client socket address information to settingsOnClose.

commit5f1a9f70d4fe9f0adaf694e19efac84af0f3efd4 authorKazu Yamamoto <kazu@iij.ad.jp> dateMon 10 Feb 2014, 22:37 (13 years ago) parentfa9a7aadf3c60f
2 files changed+3−3
warp/Network/Wai/Handler/Warp/Run.hs+1−1 warp/Network/Wai/Handler/Warp/Settings.hs+2−2
warp/Network/Wai/Handler/Warp/Run.hs+1−1
@@ -185,7 +185,7 @@ runSettingsConnectionMaker set getConnMaker app = do
185185 handle (onE Nothing) .
186186
187187 -- Call the user-supplied code for connection open and close events
188− bracket (onOpen addr) (const onClose) $ \goingon ->
188+ bracket (onOpen addr) (const $ onClose addr) $ \goingon ->
189189
190190 -- Actually serve this connection.
191191 -- onnClose above ensures the termination of the connection.
warp/Network/Wai/Handler/Warp/Settings.hs+2−2
@@ -33,7 +33,7 @@ data Settings = Settings
3333 --
3434 -- Since 2.0.3
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'.
36− , settingsOnClose :: IO () -- ^ What to do when a connection is close. Default: do nothing.
36+ , settingsOnClose :: SockAddr -> IO () -- ^ What to do when a connection is close. Default: do nothing.
3737 , settingsTimeout :: Int -- ^ Timeout value in seconds. Default value: 30
3838 , settingsIntercept :: Request -> 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'
@@ -65,7 +65,7 @@ defaultSettings = Settings
6565 , settingsOnException = defaultExceptionHandler
6666 , settingsOnExceptionResponse = defaultExceptionResponse
6767 , settingsOnOpen = const $ return True
68− , settingsOnClose = return ()
68+ , settingsOnClose = const $ return ()
6969 , settingsTimeout = 30
7070 , settingsIntercept = const Nothing
7171 , settingsManager = Nothing