on master help sign in
refactoring.
commit6c1f811dce2c62216316645ab6588b61ac8e7938 authorKazu Yamamoto <kazu@iij.ad.jp> dateFri 18 Dec 2015, 14:00 (11 years ago) parent7ec60d6
1 file changed+3−4
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+3−4
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+3−4
@@ -12,6 +12,7 @@ import qualified Control.Exception as E
1212import Control.Monad (unless, void, when)
1313import qualified Data.ByteString as BS
1414import qualified Data.ByteString.Builder.Extra as B
15+import Data.Maybe (isNothing)
1516import Foreign.Ptr
1617import Network.HPACK (setLimitForEncoding)
1718import Network.HTTP2
@@ -231,12 +232,10 @@ frameSender ctx@Context{outputQ,connectionWindow,encodeDynamicTable}
231232 Nothing -> setEndStream defaultFlags
232233 _ -> defaultFlags
233234 fillFrameHeader FrameData datPayloadLen sid flag buf
234− -- "closed" must be before "connSendAll". If not,
235+ -- "closed" must be before "flushN". If not,
235236 -- the context would be switched to the receiver,
236237 -- resulting the inconsistency of concurrency.
237− case mnext of
238− Nothing -> closed ctx strm Finished
239− _ -> return ()
238+ when (isNothing mnext) $ closed ctx strm Finished
240239 flushN total
241240 atomically $ modifyTVar' connectionWindow (subtract datPayloadLen)
242241 atomically $ modifyTVar' (streamWindow strm) (subtract datPayloadLen)