@@ -218,15 +218,12 @@ newStream sid win = Stream sid <$> newIORef Idle
218218 <*> newTVarIO win
219219 <*> newIORef defaultPrecedence
220220
221−newPushStream :: Context -> WindowSize -> IO Stream
222−newPushStream Context{serverStreamId} win = do
221+newPushStream :: Context -> WindowSize -> Precedence -> IO Stream
222+newPushStream Context{serverStreamId} win pre = do
223223 sid <- atomicModifyIORef' serverStreamId inc2
224224 Stream sid <$> newIORef Reserved
225225 <*> newTVarIO win
226− -- RFC 7540 defines this 16.
227− -- TODO: change this value according to
228− -- mime types.
229− <*> newIORef defaultPrecedence
226+ <*> newIORef pre
230227 where
231228 inc2 x = let !x' = x + 2 in (x', x')
232229
@@ -286,16 +283,19 @@ enqueueControl ctlQ ctl = atomically $ writeTQueue ctlQ ctl
286283
287284----------------------------------------------------------------
288285
289−newtype HTTP2Data = HTTP2Data [PushPromise]
286+newtype HTTP2Data = HTTP2Data {
287+ http2dataPushPromise :: [PushPromise]
288+ }
289+
290+defaultHTTP2Data :: HTTP2Data
291+defaultHTTP2Data = HTTP2Data []
290292
291293data PushPromise = PushPromise {
292294 promisedPath :: ByteString
293295 , promisedFile :: FilePath
294296 , promisedResponseHeaders :: H.ResponseHeaders
297+ , promisedWeight :: Weight
295298 }
296299
297−http2data :: [PushPromise] -> HTTP2Data
298−http2data pps = HTTP2Data pps
299−
300−http2dataPushPromise :: HTTP2Data -> [PushPromise]
301−http2dataPushPromise (HTTP2Data pps) = pps
300+defaultPushPromise :: PushPromise
301+defaultPushPromise = PushPromise "" "" [] 16