@@ -9,6 +9,7 @@ import Data.Conduit
99import Data.Conduit.Network (HostPreference (HostIPv4))
1010import GHC.IO.Exception (IOErrorType(..))
1111import qualified Network.HTTP.Types as H
12+import Network.Socket (SockAddr)
1213import Network.Wai
1314import Network.Wai.Handler.Warp.Timeout
1415import Network.Wai.Handler.Warp.Types
@@ -31,7 +32,7 @@ data Settings = Settings
3132 -- Default: 500, text/plain, \"Something went wrong\"
3233 --
3334 -- Since 2.0.3
34− , settingsOnOpen :: IO () -- ^ What to do when a connection is open. Default: do nothing.
35+ , 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'.
3536 , settingsOnClose :: IO () -- ^ What to do when a connection is close. Default: do nothing.
3637 , settingsTimeout :: Int -- ^ Timeout value in seconds. Default value: 30
3738 , settingsIntercept :: Request -> Maybe (Source IO S.ByteString -> Connection -> IO ())
@@ -63,7 +64,7 @@ defaultSettings = Settings
6364 , settingsHost = HostIPv4
6465 , settingsOnException = defaultExceptionHandler
6566 , settingsOnExceptionResponse = defaultExceptionResponse
66− , settingsOnOpen = return ()
67+ , settingsOnOpen = const $ return True
6768 , settingsOnClose = return ()
6869 , settingsTimeout = 30
6970 , settingsIntercept = const Nothing