module Network.HTTP2.TLS.Client.Settings where
import Data.X509.CertificateStore (CertificateStore)
import Network.Socket
import Network.Control
import Network.HTTP2.Client (
cacheLimit,
defaultClientConfig,
)
import Network.Run.TCP (openClientSocket)
import Network.TLS (
Information,
SessionData,
SessionID,
SessionManager,
noSessionManager,
)
data Settings = Settings
{ Settings -> String -> IO ()
settingsKeyLogger :: String -> IO ()
, Settings -> Bool
settingsValidateCert :: Bool
, Settings -> CertificateStore
settingsCAStore :: CertificateStore
, Settings -> Maybe String
settingsServerNameOverride :: Maybe HostName
, Settings -> [AddrInfoFlag]
settingsAddrInfoFlags :: [AddrInfoFlag]
, Settings -> Int
settingsCacheLimit :: Int
, Settings -> Int
settingsConcurrentStreams :: Int
, Settings -> Int
settingsStreamWindowSize :: Int
, Settings -> Int
settingsConnectionWindowSize :: Int
, Settings -> SessionManager
settingsSessionManager :: SessionManager
, Settings -> Maybe (SessionID, SessionData)
settingsWantSessionResume :: Maybe (SessionID, SessionData)
, Settings -> [(SessionID, SessionData)]
settingsWantSessionResumeList :: [(SessionID, SessionData)]
, Settings -> Bool
settingsUseEarlyData :: Bool
, Settings -> AddrInfo -> IO Socket
settingsOpenClientSocket :: AddrInfo -> IO Socket
, Settings -> Information -> IO ()
settingsOnServerFinished :: Information -> IO ()
, Settings -> Int
settingsPingRateLimit :: Int
, Settings -> Int
settingsEmptyFrameRateLimit :: Int
, Settings -> Int
settingsSettingsRateLimit :: Int
, Settings -> Int
settingsRstRateLimit :: Int
}
defaultSettings :: Settings
defaultSettings :: Settings
defaultSettings =
Settings
{ settingsKeyLogger :: String -> IO ()
settingsKeyLogger = \String
_ -> () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
, settingsValidateCert :: Bool
settingsValidateCert = Bool
True
, settingsCAStore :: CertificateStore
settingsCAStore = CertificateStore
forall a. Monoid a => a
mempty
, settingsServerNameOverride :: Maybe String
settingsServerNameOverride = Maybe String
forall a. Maybe a
Nothing
, settingsAddrInfoFlags :: [AddrInfoFlag]
settingsAddrInfoFlags = []
, settingsCacheLimit :: Int
settingsCacheLimit = ClientConfig -> Int
cacheLimit ClientConfig
defaultClientConfig
, settingsConcurrentStreams :: Int
settingsConcurrentStreams = Int
defaultMaxStreams
, settingsStreamWindowSize :: Int
settingsStreamWindowSize = Int
defaultMaxStreamData
, settingsConnectionWindowSize :: Int
settingsConnectionWindowSize = Int
defaultMaxData
, settingsSessionManager :: SessionManager
settingsSessionManager = SessionManager
noSessionManager
, settingsWantSessionResume :: Maybe (SessionID, SessionData)
settingsWantSessionResume = Maybe (SessionID, SessionData)
forall a. Maybe a
Nothing
, settingsWantSessionResumeList :: [(SessionID, SessionData)]
settingsWantSessionResumeList = []
, settingsUseEarlyData :: Bool
settingsUseEarlyData = Bool
False
, settingsOpenClientSocket :: AddrInfo -> IO Socket
settingsOpenClientSocket = AddrInfo -> IO Socket
openClientSocket
, settingsOnServerFinished :: Information -> IO ()
settingsOnServerFinished = \Information
_ -> () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
, settingsPingRateLimit :: Int
settingsPingRateLimit = Int
10
, settingsEmptyFrameRateLimit :: Int
settingsEmptyFrameRateLimit = Int
4
, settingsSettingsRateLimit :: Int
settingsSettingsRateLimit = Int
4
, settingsRstRateLimit :: Int
settingsRstRateLimit = Int
4
}