@@ -104,7 +104,7 @@ frameSender ctx@Context{outputQ,connectionWindow,encodeDynamicTable}
104104 dyntbl <- readIORef encodeDynamicTable
105105 setLimitForEncoding siz dyntbl
106106 loop
107− switch out@(OResponse strm rsp aux) pre = do
107+ switch out@(OResponse strm rsp binfo) pre = do
108108 writeIORef (streamPrecedence strm) pre
109109 unlessClosed ctx conn strm $ do
110110 cws <- getConnectionWindowSizeWhenReady ctx
@@ -115,13 +115,14 @@ frameSender ctx@Context{outputQ,connectionWindow,encodeDynamicTable}
115115 let !lim = min cws sws
116116 -- Header frame and Continuation frame
117117 let sid = streamNumber strm
118− endOfStream = case aux of
119− Persist{} -> False
120− Oneshot hb -> not hb
118+ endOfStream = case binfo of
119+ Persist{} -> False
120+ OneshotWithBody -> False
121+ OneshotWithoutBody -> True
121122 len <- headerContinue sid rsp endOfStream
122123 let total = len + frameHeaderLength
123− case aux of
124− Oneshot True -> do -- hasBody
124+ case binfo of
125+ OneshotWithBody -> do
125126 -- Data frame payload
126127 (off, _) <- sendHeadersIfNecessary total
127128 let payloadOff = off + frameHeaderLength
@@ -129,7 +130,7 @@ frameSender ctx@Context{outputQ,connectionWindow,encodeDynamicTable}
129130 fillResponseBodyGetNext conn ii payloadOff lim rsp
130131 fillDataHeaderSend strm total datPayloadLen mnext
131132 maybeEnqueueNext strm mnext
132− Oneshot False -> do
133+ OneshotWithoutBody -> do
133134 -- "closed" must be before "connSendAll". If not,
134135 -- the context would be switched to the receiver,
135136 -- resulting the inconsistency of concurrency.