@@ -53,11 +53,12 @@ type Responder = InternalInfo
5353 -> Response
5454 -> IO ResponseReceived
5555
56−pushStream :: Context -> StreamId -> ValueTable -> InternalInfo
56+pushStream :: Context -> S.Settings
57+ -> StreamId -> ValueTable -> Request -> InternalInfo
5758 -> Maybe HTTP2Data
5859 -> IO (Stream -> Rspn -> InternalInfo -> IO () -> Output, IO ())
59−pushStream _ _ _ _ Nothing = return (ORspn, return ())
60−pushStream ctx@Context{http2settings,outputQ} pid reqvt ii (Just h2d)
60+pushStream _ _ _ _ _ _ Nothing = return (ORspn, return ())
61+pushStream ctx@Context{http2settings,outputQ} settings pid reqvt req ii (Just h2d)
6162 | len == 0 = return (ORspn, return ())
6263 | otherwise = do
6364 pushable <- enablePush <$> readIORef http2settings
@@ -73,6 +74,10 @@ pushStream ctx@Context{http2settings,outputQ} pid reqvt ii (Just h2d)
7374 where
7475 !pps0 = http2dataPushPromise h2d
7576 !len = length pps0
77+ !pushLogger = S.settingsServerPushLogger settings
78+ !sa = remoteHost req
79+ !mua = requestHeaderUserAgent req
80+ !referer = rawPathInfo req
7681 increment tvar = atomically $ modifyTVar' tvar (+1)
7782 waiter lim tvar = atomically $ do
7883 n <- readTVar tvar
@@ -100,6 +105,7 @@ pushStream ctx@Context{http2settings,outputQ} pid reqvt ii (Just h2d)
100105 !rsp = RspnFile H.ok200 (ths,vt) file (Just part)
101106 !ths = (tokenLastModified,date) :
102107 addContentHeadersForFilePart ths0 part
108+ pushLogger sa path size referer mua
103109 let out = OPush strm promisedRequest rsp ii (increment tvar) pid
104110 enqueueOutput outputQ out
105111 push tvar pps (n + 1)
@@ -114,18 +120,18 @@ response settings ctx@Context{outputQ} mgr ii reqvt tconf strm req rsp = case rs
114120 | noBody s0 -> responseNoBody s0 hs0
115121 | isHead -> responseNoBody s0 hs0
116122 | otherwise -> getHTTP2Data req
117− >>= pushStream ctx sid reqvt ii
123+ >>= pushStream ctx settings sid reqvt req ii
118124 >>= responseStreaming s0 hs0 strmbdy
119125 ResponseBuilder s0 hs0 b
120126 | noBody s0 -> responseNoBody s0 hs0
121127 | isHead -> responseNoBody s0 hs0
122128 | otherwise -> getHTTP2Data req
123− >>= pushStream ctx sid reqvt ii
129+ >>= pushStream ctx settings sid reqvt req ii
124130 >>= responseBuilderBody s0 hs0 b
125131 ResponseFile s0 hs0 p mp
126132 | noBody s0 -> responseNoBody s0 hs0
127133 | otherwise -> getHTTP2Data req
128− >>= pushStream ctx sid reqvt ii
134+ >>= pushStream ctx settings sid reqvt req ii
129135 >>= responseFileXXX s0 hs0 p mp
130136 ResponseRaw _ _ -> error "HTTP/2 does not support ResponseRaw"
131137 where