1
0

Compare commits

...

2 Commits

Author SHA1 Message Date
Olivier Wilkinson (reivilibre)
0cfe2af408 Newsfile
Signed-off-by: Olivier Wilkinson (reivilibre) <oliverw@matrix.org>
2023-09-22 19:00:28 +01:00
Olivier Wilkinson (reivilibre)
da19c6fcf7 Add warnings when /forget isn't given a JSON body 2023-09-22 18:59:10 +01:00
2 changed files with 23 additions and 0 deletions

1
changelog.d/16365.misc Normal file
View File

@@ -0,0 +1 @@
Add warning when `/forget` is used without a request body, as this is against the specification.

View File

@@ -47,6 +47,7 @@ from synapse.http.servlet import (
parse_enum,
parse_integer,
parse_json_object_from_request,
parse_json_value_from_request,
parse_string,
parse_strings_from_args,
)
@@ -960,6 +961,17 @@ class RoomForgetRestServlet(TransactionRestServlet):
self, request: SynapseRequest, room_id: str
) -> Tuple[int, JsonDict]:
requester = await self.auth.get_user_by_req(request, allow_guest=False)
content = parse_json_value_from_request(request, allow_empty_body=True)
if content is None:
logger.warning(
"No JSON body supplied to POST /forget. "
"This is not spec-compliant and will not be accepted in a future release!"
)
elif not isinstance(content, dict):
message = "Content must be a JSON object."
raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.BAD_JSON)
return await self._do(requester, room_id)
async def on_PUT(
@@ -968,6 +980,16 @@ class RoomForgetRestServlet(TransactionRestServlet):
requester = await self.auth.get_user_by_req(request, allow_guest=False)
set_tag("txn_id", txn_id)
content = parse_json_value_from_request(request, allow_empty_body=True)
if content is None:
logger.warning(
"No JSON body supplied to PUT /forget. "
"This is not spec-compliant and will not be accepted in a future release!"
)
elif not isinstance(content, dict):
message = "Content must be a JSON object."
raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.BAD_JSON)
return await self.txns.fetch_or_execute_request(
request, requester, self._do, requester, room_id
)