sendResponse method

  1. @override
Future sendResponse(
  1. Socket request,
  2. ServerTransportStream response,
  3. RequestContext req,
  4. ResponseContext res, {
  5. bool ignoreFinalizers = false,
})
override

Sends a response.

Implementation

@override
Future sendResponse(
  Socket request,
  ServerTransportStream response,
  RequestContext req,
  ResponseContext res, {
  bool ignoreFinalizers = false,
}) {
  // An unbuffered Http2ResponseContext adds this itself when it sends its
  // headers; a buffered one is sent by the driver. The cookie goes on after
  // the response finalizers, which may be the first to read `req.session`.
  if (!res.isBuffered || res is! Http2ResponseContext) {
    return super.sendResponse(
      request,
      response,
      req,
      res,
      ignoreFinalizers: ignoreFinalizers,
    );
  }
  var finalizers = ignoreFinalizers ? Future.value() : res.runFinalizers(req);
  return finalizers.then((_) {
    res.addSessionCookie();
    if (req is Http2RequestContext) req.markHeadersSent();
    return super.sendResponse(
      request,
      response,
      req,
      res,
      ignoreFinalizers: true,
    );
  });
}