on master help sign in
Refactor 'maybeEndHeaders' for adding the EndHeaders flag.
3875acfAndrew Pritchard
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+6−6
@@ -137,13 +137,15 @@ frameSender ctx@Context{outputQ,connectionWindow}
137 flushN :: Int -> IO ()
137 flushN :: Int -> IO ()
138 flushN n = bufferIO connWriteBuffer n connSendAll
138 flushN n = bufferIO connWriteBuffer n connSendAll
139
139
140+ -- A flags value with the end-header flag set iff the argument is B.Done.
141+ maybeEndHeaders B.Done = setEndHeader defaultFlags
142+ maybeEndHeaders _ = defaultFlags
143+
140 -- Write header and possibly continuation frames into the connection
144 -- Write header and possibly continuation frames into the connection
141 -- buffer, using the given builder as their contents.
145 -- buffer, using the given builder as their contents.
142 headerContinue sid builder endOfStream = do
146 headerContinue sid builder endOfStream = do
143 (len, signal) <- B.runBuilder builder bufHeaderPayload headerPayloadLim
147 (len, signal) <- B.runBuilder builder bufHeaderPayload headerPayloadLim
144− let flag0 = case signal of
148+ let flag0 = maybeEndHeaders signal
145− B.Done -> setEndHeader defaultFlags
146− _ -> defaultFlags
147 flag = if endOfStream then setEndStream flag0 else flag0
149 flag = if endOfStream then setEndStream flag0 else flag0
148 fillFrameHeader FrameHeaders len sid flag connWriteBuffer
150 fillFrameHeader FrameHeaders len sid flag connWriteBuffer
149 continue sid len signal
151 continue sid len signal
@@ -152,9 +154,7 @@ frameSender ctx@Context{outputQ,connectionWindow}
152 continue sid len (B.More _ writer) = do
154 continue sid len (B.More _ writer) = do
153 flushN $ len + frameHeaderLength
155 flushN $ len + frameHeaderLength
154 (len', signal') <- writer bufHeaderPayload headerPayloadLim
156 (len', signal') <- writer bufHeaderPayload headerPayloadLim
155− let flag = case signal' of
157+ let flag = maybeEndHeaders signal'
156− B.Done -> setEndHeader defaultFlags
157− _ -> defaultFlags
158 fillFrameHeader FrameContinuation len' sid flag connWriteBuffer
158 fillFrameHeader FrameContinuation len' sid flag connWriteBuffer
159 continue sid len' signal'
159 continue sid len' signal'
160 continue sid len (B.Chunk bs writer) = do
160 continue sid len (B.Chunk bs writer) = do