on master help sign in
Add Trailers to SFinish and provide them in 'response'
commit792f3c1e89f8457a8705041753059b8c58c7e051 authorAndrew Pritchard <awpr@google.com> dateFri 24 Jul 2015, 23:30 (11 years ago) parent161b6dd
3 files changed+4−7
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+2−5 warp/Network/Wai/Handler/Warp/HTTP2/Types.hs+1−1 warp/Network/Wai/Handler/Warp/HTTP2/Worker.hs+1−1
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+2−5
@@ -221,10 +221,7 @@ frameSender ctx@Context{outputQ,connectionWindow}
221221 let sid = streamNumber strm
222222 buf = connWriteBuffer `plusPtr` otherLen
223223 total = otherLen + frameHeaderLength + datPayloadLen
224− flag = case mnext of
225− CFinish -> setEndStream defaultFlags
226− _ -> defaultFlags
227− fillFrameHeader FrameData datPayloadLen sid flag buf
224+ fillFrameHeader FrameData datPayloadLen sid defaultFlags buf
228225 -- "closed" must be before "connSendAll". If not,
229226 -- the context would be switched to the receiver,
230227 -- resulting the inconsistency of concurrency.
@@ -356,7 +353,7 @@ runStreamBuilder buf0 room0 sq = loop buf0 room0 0
356353 B.More _ writer -> return (LOne writer, Nothing, total')
357354 B.Chunk bs writer -> return (LTwo bs writer, Nothing, total')
358355 Just SFlush -> return (LZero, Nothing, total)
359− Just SFinish -> return (LZero, Just [], total)
356+ Just (SFinish trailers) -> return (LZero, Just trailers, total)
360357
361358fillBufStream :: Buffer -> BufSize -> Leftover -> TBQueue Sequence -> TVar Sync -> Stream -> DynaNext
362359fillBufStream buf0 siz0 leftover0 sq tvar strm lim0 = do
warp/Network/Wai/Handler/Warp/HTTP2/Types.hs+1−1
@@ -81,7 +81,7 @@ outputStream _ = error "outputStream"
8181
8282----------------------------------------------------------------
8383
84−data Sequence = SFinish
84+data Sequence = SFinish Trailers
8585 | SFlush
8686 | SBuilder Builder
8787
warp/Network/Wai/Handler/Warp/HTTP2/Worker.hs+1−1
@@ -71,7 +71,7 @@ response Context{outputQ} mgr tconf th strm req rsp = do
7171 T.tickle th
7272 flush = atomically $ writeTBQueue sq SFlush
7373 strmbdy push flush
74− atomically $ writeTBQueue sq SFinish
74+ atomically $ writeTBQueue sq $ SFinish []
7575 _ -> do
7676 setThreadContinue tconf True
7777 let hasBody = requestMethod req /= H.methodHead