From bd1c41a06b7e1dcdec5836c297629437ab218d2b Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sat, 15 Jul 2023 19:39:23 +0200 Subject: [PATCH] Add default 404 error page --- src/HttpContext.h | 4 ++++ src/HttpErrors.h | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/HttpContext.h b/src/HttpContext.h index 21c7c5e..7a07783 100644 --- a/src/HttpContext.h +++ b/src/HttpContext.h @@ -171,6 +171,10 @@ private: /* Route the method and URL */ selectedRouter->getUserData() = {(HttpResponse *) s, httpRequest}; if (!selectedRouter->route(httpRequest->getCaseSensitiveMethod(), httpRequest->getUrl())) { + /* We don't care if it reaches the client or not */ + us_socket_write(SSL, (us_socket_t *) s, httpErrorResponses[HTTP_ERROR_404_FILE_NOT_FOUND].data(), (int) httpErrorResponses[HTTP_ERROR_404_FILE_NOT_FOUND].length(), false); + us_socket_shutdown(SSL, (us_socket_t *) s); + /* We have to force close this socket as we have no handler for it */ us_socket_close(SSL, (us_socket_t *) s, 0, nullptr); return nullptr; diff --git a/src/HttpErrors.h b/src/HttpErrors.h index f6c92ff..580e5bc 100644 --- a/src/HttpErrors.h +++ b/src/HttpErrors.h @@ -25,7 +25,8 @@ namespace uWS { enum HttpError { HTTP_ERROR_505_HTTP_VERSION_NOT_SUPPORTED = 1, HTTP_ERROR_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 2, - HTTP_ERROR_400_BAD_REQUEST = 3 + HTTP_ERROR_400_BAD_REQUEST = 3, + HTTP_ERROR_404_FILE_NOT_FOUND = 4 }; /* Returned parser errors match this LUT. */ @@ -33,7 +34,8 @@ static const std::string_view httpErrorResponses[] = { "", /* Zeroth place is no error so don't use it */ "HTTP/1.1 505 HTTP Version Not Supported\r\n\r\n

HTTP Version Not Supported

This server does not support HTTP/1.0.


uWebSockets/20 Server", "HTTP/1.1 431 Request Header Fields Too Large\r\n\r\n

Request Header Fields Too Large


uWebSockets/20 Server", - "HTTP/1.1 400 Bad Request\r\n\r\n

Bad Request


uWebSockets/20 Server" + "HTTP/1.1 400 Bad Request\r\n\r\n

Bad Request


uWebSockets/20 Server", + "HTTP/1.1 404 File Not Found\r\n\r\n

File Not Found


uWebSockets/20 Server" }; }