public static function commit(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\HttpFoundation\Response $response, \Serphlet\Config\ServletContext $context) { // Determine the type $statusCode = $response->getStatus(); $exception = $request->getAttribute(\Serphlet\Globals::EXCEPTION_ATTR); // Consider only getting involved if the response is marked as an error if (!$response->isError()) { return; } // Handle the status if (!$response->isCommitted()) { $response->resetBuffer(); if ($statusCode >= 400) { $request->setAttribute(\Serphlet\Globals::EXCEPTION_PAGE_ATTR, $request->getRequestURI()); $request->setAttribute(\Serphlet\Globals::STATUS_CODE_ATTR, $statusCode); $errorMessage = $request->getAttribute(\Serphlet\Globals::ERROR_MESSAGE_ATTR); if (!trim($errorMessage)) { $request->setAttribute(\Serphlet\Globals::ERROR_MESSAGE_ATTR, $response->getMessage()); } $errorPage = $context->findErrorPage($statusCode); if (!empty($errorPage)) { self::serveErrorPage($request, $response, $context, $errorPage); } else { self::serveDefaultErrorPage($request, $response, $context); } } else { // Errors below this status don't have response contents } } }