http2-tls 0.2.1 → 0.2.2
raw patch · 3 files changed
+30/−16 lines, 3 filesdep ~http2PVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: http2
API changes (from Hackage documentation)
+ Network.HTTP2.TLS.Client: defaultAuthority :: HostName -> Authority
+ Network.HTTP2.TLS.Client: type Authority = String
- Network.HTTP2.TLS.Client: defaultClientConfig :: Settings -> HostName -> ClientConfig
+ Network.HTTP2.TLS.Client: defaultClientConfig :: Settings -> Authority -> ClientConfig
Files
- Network/HTTP2/TLS/Client.hs +27/−12
- Network/HTTP2/TLS/Client/Settings.hs +1/−2
- http2-tls.cabal +2/−2
Network/HTTP2/TLS/Client.hs view
@@ -9,12 +9,14 @@ runH2C, Client, HostName,+ Authority, PortNumber, runTLS, -- ** Generalized API ClientConfig, defaultClientConfig,+ defaultAuthority, runWithConfig, runH2CWithConfig, runTLSWithConfig,@@ -34,12 +36,10 @@ import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS.C8-import qualified Data.ByteString.Char8 as C8-import qualified Data.ByteString.UTF8 as BS.UTF8 import Data.Default.Class (def) import Data.Maybe (fromMaybe) import Data.X509.Validation (validateDefault)-import Network.HTTP2.Client (Client, ClientConfig)+import Network.HTTP2.Client (Client, ClientConfig, Authority) import qualified Network.HTTP2.Client as H2Client import Network.Socket import Network.TLS hiding (HostName)@@ -58,7 +58,7 @@ run :: Settings -> HostName -> PortNumber -> Client a -> IO a run settings serverName port client = runWithConfig- (defaultClientConfig settings serverName)+ (defaultClientConfig settings $ defaultAuthority serverName) settings serverName port@@ -74,7 +74,7 @@ -> IO a runTLS settings serverName port alpn action = runTLSWithConfig- (defaultClientConfig settings serverName)+ (defaultClientConfig settings $ defaultAuthority serverName) settings serverName port@@ -84,7 +84,7 @@ runH2C :: Settings -> HostName -> PortNumber -> Client a -> IO a runH2C settings serverName port client = runH2CWithConfig- (defaultClientConfig settings serverName)+ (defaultClientConfig settings $ defaultAuthority serverName) serverName port client@@ -164,13 +164,12 @@ defaultClientConfig :: Settings- -> HostName- -- ^ Authority+ -> Authority -> ClientConfig-defaultClientConfig Settings{..} serverName =+defaultClientConfig Settings{..} auth = H2Client.defaultClientConfig { H2Client.scheme = "https"- , H2Client.authority = C8.pack serverName+ , H2Client.authority = auth , H2Client.cacheLimit = settingsCacheLimit , H2Client.connectionWindowSize = settingsConnectionWindowSize , H2Client.settings =@@ -180,6 +179,22 @@ } } +-- | Default authority+--+-- When we connect to a server, we can distinguish between three names, all of+-- which may be different:+--+-- 1. The 'HostName', used for the DNS lookup to get the server's IP+-- 2. The HTTP2 @:authority@ pseudo-header+-- 3. The TLS SNI (Server Name Indicator).+-- This is different from (2) only in exceptional circumstances, see+-- 'settingsServerNameOverride'.+--+-- In /most/ cases, however, all three names are identical, and so the default+-- 'Authority' is simply equal to the 'ServerName'.+defaultAuthority :: HostName -> Authority+defaultAuthority = id+ openTCP :: [AddrInfoFlag] -> HostName -> PortNumber -> IO Socket openTCP flags h p = do ai <- makeAddrInfo flags h p@@ -201,7 +216,7 @@ getClientParams :: Settings- -> ByteString+ -> HostName -- ^ Server name (for TLS SNI) -> PortNumber -- ^ Port number@@ -213,7 +228,7 @@ getClientParams Settings{..} serverName port alpn = -- RFC 4366 mandates UTF-8 for SNI -- <https://datatracker.ietf.org/doc/html/rfc4366#section-3.1>- (defaultParamsClient (BS.UTF8.toString serverName) (BS.C8.pack $ show port))+ (defaultParamsClient serverName (BS.C8.pack $ show port)) { clientSupported = supported , clientWantSessionResume = Nothing , clientUseServerNameIndication = True
Network/HTTP2/TLS/Client/Settings.hs view
@@ -1,6 +1,5 @@ module Network.HTTP2.TLS.Client.Settings where -import Data.ByteString (ByteString) import Data.X509.CertificateStore (CertificateStore) import Network.Socket @@ -23,7 +22,7 @@ -- True , settingsCAStore :: CertificateStore -- ^ Certificate store used for validation. The default is 'mempty'. (TLS and H2)- , settingsServerNameOverride :: Maybe ByteString+ , settingsServerNameOverride :: Maybe HostName -- ^ Server name override -- -- By default, the server name (for TLS SNI) is set based on the
http2-tls.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: http2-tls-version: 0.2.1+version: 0.2.2 license: BSD3 license-file: LICENSE maintainer: Kazu Yamamoto <kazu@iij.ad.jp>@@ -37,7 +37,7 @@ build-depends: base >=4.9 && <5, bytestring >= 0.10 && < 0.12,- http2 >=5.0 && < 5.1,+ http2 >=5.1 && < 5.2, data-default-class >= 0.1 && < 0.2, network >= 3.1.4 && < 3.2, time-manager >= 0.0.1 && < 0.1,