http2 5.3.2 → 5.3.3
raw patch · 4 files changed
+20/−7 lines, 4 filesdep +criteriondep +iproutedep −gaugedep ~unliftioPVP ok
version bump matches the API change (PVP)
Dependencies added: criterion, iproute
Dependencies removed: gauge
Dependency ranges changed: unliftio
API changes (from Hackage documentation)
Files
- ChangeLog.md +5/−0
- Network/HTTP2/Client/Run.hs +7/−1
- bench-hpack/Main.hs +3/−3
- http2.cabal +5/−3
ChangeLog.md view
@@ -1,5 +1,10 @@ # ChangeLog for http2 +## 5.3.3++* Enclosing IPv6 literal authority with square brackets.+ [#143](https://github.com/kazu-yamamoto/http2/pull/143)+ ## 5.3.2 * Avoid unnecessary empty data frames at end of stream
Network/HTTP2/Client/Run.hs view
@@ -8,11 +8,13 @@ import Control.Concurrent.STM (check) import qualified Data.ByteString.UTF8 as UTF8 import Data.IORef+import Data.IP (IPv6) import Network.Control (RxFlow (..), defaultMaxData) import Network.HTTP.Semantics.Client import Network.HTTP.Semantics.Client.Internal import Network.HTTP.Semantics.IO import Network.Socket (SockAddr)+import Text.Read (readMaybe) import UnliftIO.Async import UnliftIO.Concurrent import UnliftIO.Exception@@ -176,12 +178,16 @@ -- the ordering of responses can be out-of-order. -- But for clients, the ordering must be maintained. -- To implement this, 'outputQStreamID' is used.+ let isIPv6 = isJust (readMaybe auth :: Maybe IPv6)+ auth'+ | isIPv6 = "[" <> UTF8.fromString auth <> "]"+ | otherwise = UTF8.fromString auth let hdr1, hdr2 :: [Header] hdr1 | scheme /= "" = (":scheme", scheme) : hdr0 | otherwise = hdr0 hdr2- | auth /= "" = (":authority", UTF8.fromString auth) : hdr1+ | auth /= "" = (":authority", auth') : hdr1 | otherwise = hdr1 req' = req{outObjHeaders = hdr2} -- FLOW CONTROL: SETTINGS_MAX_CONCURRENT_STREAMS: send: respecting peer's limit
bench-hpack/Main.hs view
@@ -2,8 +2,8 @@ module Main where +import Criterion.Main import Data.ByteString (ByteString)-import Gauge.Main import Network.HPACK import UnliftIO.Exception @@ -39,7 +39,7 @@ ] -----------------------------------------------------------------prepare :: [HeaderList] -> IO [ByteString]+prepare :: [[Header]] -> IO [ByteString] prepare hdrs = do tbl <- newDynamicTableForEncoding defaultDynamicTableSize go tbl hdrs id@@ -59,7 +59,7 @@ !_ <- decodeHeader tbl f go tbl fs -enc :: EncodeStrategy -> [HeaderList] -> IO ()+enc :: EncodeStrategy -> [[Header]] -> IO () enc stgy hdrs = do tbl <- newDynamicTableForEncoding defaultDynamicTableSize go tbl hdrs
http2.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: http2-version: 5.3.2+version: 5.3.3 license: BSD3 license-file: LICENSE maintainer: Kazu Yamamoto <kazu@iij.ad.jp>@@ -118,6 +118,7 @@ containers >=0.6, http-semantics >= 0.2 && <0.3, http-types >=0.12 && <0.13,+ iproute >= 1.7 && < 1.8, network >=3.1, network-byte-order >=0.1.7 && <0.2, network-control >=0.1 && <0.2,@@ -409,7 +410,8 @@ bytestring, case-insensitive, containers,- gauge,+ criterion,+ http2, network-byte-order, stm,- http2+ unliftio