diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2022-12-08 11:37:05 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-08 11:37:05 -0500 |
commit | 9d8a3234ba1d3ff831a7647f45c67946773d88a7 (patch) | |
tree | 256c2459353b973ccd217bf2282433932a500a97 /synapse/http/server.py | |
parent | Check the stream position before checking if the cache is empty. (#14639) (diff) | |
download | synapse-9d8a3234ba1d3ff831a7647f45c67946773d88a7.tar.xz |
Respond with proper error responses on unknown paths. (#14621)
Returns a proper 404 with an errcode of M_RECOGNIZED for unknown endpoints per MSC3743.
Diffstat (limited to 'synapse/http/server.py')
-rw-r--r-- | synapse/http/server.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/synapse/http/server.py b/synapse/http/server.py index 051a1899a0..2563858f3c 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py @@ -577,7 +577,24 @@ def _unrecognised_request_handler(request: Request) -> NoReturn: Args: request: Unused, but passed in to match the signature of ServletCallback. """ - raise UnrecognizedRequestError() + raise UnrecognizedRequestError(code=404) + + +class UnrecognizedRequestResource(resource.Resource): + """ + Similar to twisted.web.resource.NoResource, but returns a JSON 404 with an + errcode of M_UNRECOGNIZED. + """ + + def render(self, request: SynapseRequest) -> int: + f = failure.Failure(UnrecognizedRequestError(code=404)) + return_json_error(f, request, None) + # A response has already been sent but Twisted requires either NOT_DONE_YET + # or the response bytes as a return value. + return NOT_DONE_YET + + def getChild(self, name: str, request: Request) -> resource.Resource: + return self class RootRedirect(resource.Resource): |