@@ -30,15 +30,15 @@ import Network.Wai.Handler.Warp.IORef
3030import qualified Network.Wai.Handler.Warp.Response as R
3131import qualified Network.Wai.Handler.Warp.Settings as S
3232import qualified Network.Wai.Handler.Warp.Timeout as T
33−import Network.Wai.Internal (Response(..), ResponseReceived(..), ResponseReceived(..))
33+import Network.Wai.Internal (Response(..))
3434
3535----------------------------------------------------------------
3636
37−-- | The wai definition is @type Http2Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived@.
38−-- This type implements the second argument @Response -> IO ResponseReceived@
37+-- | The wai definition is @type Http2Application = Request -> (Response -> IO ()) -> IO Trailers@.
38+-- This type implements the second argument @Response -> IO ()@
3939-- with extra arguments.
4040type Responder = ThreadContinue -> T.Handle -> Stream -> Request ->
41− TBQueue Sequence -> Response -> IO ResponseReceived
41+ TBQueue Sequence -> Response -> IO ()
4242
4343-- | This function is passed to workers.
4444-- They also pass 'Response's from 'Http2Application's to this function.
@@ -74,7 +74,6 @@ response Context{outputQ} mgr tconf th strm req sq rsp = do
7474 && R.hasBody (responseStatus rsp)
7575 out = OResponse strm rsp (Oneshot hasBody)
7676 enqueueOrSpawnTemporaryWaiter strm outputQ out
77− return ResponseReceived
7877
7978data Break = Break deriving (Show, Typeable)
8079
@@ -102,8 +101,8 @@ worker ctx@Context{inputQ,outputQ} set tm app responder = do
102101 T.tickle th
103102 app req $ responder tcont th strm req sq
104103 cont1 <- case ex of
105− Right ResponseReceived -> do
106− atomically $ writeTBQueue sq $ SFinish []
104+ Right trailers -> do
105+ atomically $ writeTBQueue sq $ SFinish trailers
107106 return True
108107 Left e@(SomeException _)
109108 | Just Break <- E.fromException e -> do