@@ -8,6 +8,7 @@ import qualified Control.Exception as E
88import Control.Monad (when, unless, replicateM_)
99import Data.ByteString (ByteString)
1010import Network.HTTP2
11+import Network.HTTP2.Priority
1112import Network.Socket (SockAddr)
1213import Network.Wai
1314import Network.Wai.Handler.Warp.HTTP2.EncodeFrame
@@ -22,6 +23,9 @@ import Network.Wai.Handler.Warp.Types
2223
2324----------------------------------------------------------------
2425
26+initialFrame :: ByteString
27+initialFrame = settingsFrame id [(SettingsMaxConcurrentStreams,recommendedConcurrency)]
28+
2529http2 :: Connection -> InternalInfo -> SockAddr -> Transport -> S.Settings -> (BufSize -> IO ByteString) -> Application -> IO ()
2630http2 conn ii addr transport settings readN app = do
2731 checkTLS
@@ -42,6 +46,7 @@ http2 conn ii addr transport settings readN app = do
4246 -- Receiver
4347 let mkreq = mkRequest ii settings addr
4448 tid <- forkIO $ frameReceiver ctx mkreq readN
49+ enqueueControl (outputQ ctx) 0 $ OFrame initialFrame
4550 -- Sender
4651 -- frameSender is the main thread because it ensures to send
4752 -- a goway frame.