@@ -64,7 +64,7 @@ response Context{outputQ} mgr tconf th strm req rsp = do
6464 -- Since we must not enqueue an empty queue to the priority
6565 -- queue, we spawn a thread to ensure that the designated
6666 -- queue is not empty.
67− void $ forkIO $ waiter tvar sq outputQ
67+ void $ forkIO $ waiter tvar sq strm outputQ
6868 atomically $ writeTVar tvar (SyncNext out)
6969 let push b = do
7070 atomically $ writeTBQueue sq (SBuilder b)
@@ -130,27 +130,27 @@ worker ctx@Context{inputQ,outputQ} set tm app responder = do
130130 Just e -> S.settingsOnException set (Just req) e
131131 clearStreamInfo sinfo
132132
133−waiter :: TVar Sync -> TBQueue Sequence -> PriorityTree Output -> IO ()
134−waiter tvar sq outQ = do
133+waiter :: TVar Sync -> TBQueue Sequence -> Stream -> PriorityTree Output -> IO ()
134+waiter tvar sq strm outQ = do
135135 -- waiting for actions other than SyncNone
136136 mx <- atomically $ do
137137 mout <- readTVar tvar
138138 case mout of
139− SyncNone -> retry
140− SyncNext out -> do
139+ SyncNone -> retry
140+ SyncNext out -> do
141141 writeTVar tvar SyncNone
142− return $ Just out
143− SyncFinish -> return Nothing
142+ return $ Right out
143+ SyncFinish trailers -> return $ Left trailers
144144 case mx of
145− Nothing -> return ()
146− Just out -> do
145+ Left trailers -> enqueueWhenWindowIsOpen outQ (OTrailers strm trailers)
146+ Right out -> do
147147 -- ensuring that the streaming queue is not empty.
148148 atomically $ do
149149 isEmpty <- isEmptyTBQueue sq
150150 when isEmpty retry
151151 -- ensuring that stream window is greater than 0.
152152 enqueueWhenWindowIsOpen outQ out
153− waiter tvar sq outQ
153+ waiter tvar sq strm outQ
154154
155155----------------------------------------------------------------
156156