on master help sign in
Add a field nextPushStreamId to Context
7666038Andrew Pritchard
warp/Network/Wai/Handler/Warp/HTTP2/Types.hs+4
@@ -104,6 +104,9 @@ data Context = Context {
104 -- this requirement.
104 -- this requirement.
105 , continued :: IORef (Maybe StreamId)
105 , continued :: IORef (Maybe StreamId)
106 , currentStreamId :: IORef StreamId
106 , currentStreamId :: IORef StreamId
107+ -- ^ Last client-initiated stream ID we've handled.
108+ , nextPushStreamId :: IORef StreamId
109+ -- ^ Next available server-initiated stream ID.
107 , inputQ :: TQueue Input
110 , inputQ :: TQueue Input
108 , outputQ :: PriorityTree Output
111 , outputQ :: PriorityTree Output
109 , encodeDynamicTable :: IORef DynamicTable
112 , encodeDynamicTable :: IORef DynamicTable
@@ -119,6 +122,7 @@ newContext = Context <$> newIORef defaultSettings
119 <*> newIORef 0
122 <*> newIORef 0
120 <*> newIORef Nothing
123 <*> newIORef Nothing
121 <*> newIORef 0
124 <*> newIORef 0
125+ <*> newIORef 2 -- first server push stream; 0 is reserved
122 <*> newTQueueIO
126 <*> newTQueueIO
123 <*> newPriorityTree
127 <*> newPriorityTree
124 <*> (newDynamicTableForEncoding defaultDynamicTableSize >>= newIORef)
128 <*> (newDynamicTableForEncoding defaultDynamicTableSize >>= newIORef)