diff --git a/synapse/rest/client/receipts.py b/synapse/rest/client/receipts.py
index f9caab6635..4b03eb876b 100644
--- a/synapse/rest/client/receipts.py
+++ b/synapse/rest/client/receipts.py
@@ -13,12 +13,10 @@
# limitations under the License.
import logging
-import re
from typing import TYPE_CHECKING, Tuple
from synapse.api.constants import ReceiptTypes
from synapse.api.errors import SynapseError
-from synapse.http import get_request_user_agent
from synapse.http.server import HttpServer
from synapse.http.servlet import RestServlet, parse_json_object_from_request
from synapse.http.site import SynapseRequest
@@ -26,8 +24,6 @@ from synapse.types import JsonDict
from ._base import client_patterns
-pattern = re.compile(r"(?:Element|SchildiChat)/1\.[012]\.")
-
if TYPE_CHECKING:
from synapse.server import HomeServer
@@ -69,14 +65,7 @@ class ReceiptRestServlet(RestServlet):
):
raise SynapseError(400, "Receipt type must be 'm.read'")
- # Do not allow older SchildiChat and Element Android clients (prior to Element/1.[012].x) to send an empty body.
- user_agent = get_request_user_agent(request)
- allow_empty_body = False
- if "Android" in user_agent:
- if pattern.match(user_agent) or "Riot" in user_agent:
- allow_empty_body = True
- # This call makes sure possible empty body is handled correctly
- parse_json_object_from_request(request, allow_empty_body)
+ parse_json_object_from_request(request, allow_empty_body=False)
await self.presence_handler.bump_presence_active_time(requester.user)
diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py
index 906fe09e97..4b8bfbffcb 100644
--- a/synapse/rest/client/room.py
+++ b/synapse/rest/client/room.py
@@ -34,7 +34,7 @@ from synapse.api.errors import (
)
from synapse.api.filtering import Filter
from synapse.events.utils import format_event_for_client_v2
-from synapse.http.server import HttpServer
+from synapse.http.server import HttpServer, cancellable
from synapse.http.servlet import (
ResolveRoomIdMixin,
RestServlet,
@@ -143,6 +143,7 @@ class RoomStateEventRestServlet(TransactionRestServlet):
self.__class__.__name__,
)
+ @cancellable
def on_GET_no_state_key(
self, request: SynapseRequest, room_id: str, event_type: str
) -> Awaitable[Tuple[int, JsonDict]]:
@@ -153,6 +154,7 @@ class RoomStateEventRestServlet(TransactionRestServlet):
) -> Awaitable[Tuple[int, JsonDict]]:
return self.on_PUT(request, room_id, event_type, "")
+ @cancellable
async def on_GET(
self, request: SynapseRequest, room_id: str, event_type: str, state_key: str
) -> Tuple[int, JsonDict]:
@@ -481,6 +483,7 @@ class RoomMemberListRestServlet(RestServlet):
self.auth = hs.get_auth()
self.store = hs.get_datastores().main
+ @cancellable
async def on_GET(
self, request: SynapseRequest, room_id: str
) -> Tuple[int, JsonDict]:
@@ -602,6 +605,7 @@ class RoomStateRestServlet(RestServlet):
self.message_handler = hs.get_message_handler()
self.auth = hs.get_auth()
+ @cancellable
async def on_GET(
self, request: SynapseRequest, room_id: str
) -> Tuple[int, List[JsonDict]]:
diff --git a/synapse/rest/media/v1/preview_url_resource.py b/synapse/rest/media/v1/preview_url_resource.py
index 50383bdbd1..2b2db63bf7 100644
--- a/synapse/rest/media/v1/preview_url_resource.py
+++ b/synapse/rest/media/v1/preview_url_resource.py
@@ -668,7 +668,7 @@ class PreviewUrlResource(DirectServeJsonResource):
logger.debug("Running url preview cache expiry")
if not (await self.store.db_pool.updates.has_completed_background_updates()):
- logger.info("Still running DB updates; skipping expiry")
+ logger.debug("Still running DB updates; skipping url preview cache expiry")
return
def try_remove_parent_dirs(dirs: Iterable[str]) -> None:
@@ -688,7 +688,9 @@ class PreviewUrlResource(DirectServeJsonResource):
# Failed, skip deleting the rest of the parent dirs
if e.errno != errno.ENOTEMPTY:
logger.warning(
- "Failed to remove media directory: %r: %s", dir, e
+ "Failed to remove media directory while clearing url preview cache: %r: %s",
+ dir,
+ e,
)
break
@@ -703,7 +705,11 @@ class PreviewUrlResource(DirectServeJsonResource):
except FileNotFoundError:
pass # If the path doesn't exist, meh
except OSError as e:
- logger.warning("Failed to remove media: %r: %s", media_id, e)
+ logger.warning(
+ "Failed to remove media while clearing url preview cache: %r: %s",
+ media_id,
+ e,
+ )
continue
removed_media.append(media_id)
@@ -714,9 +720,11 @@ class PreviewUrlResource(DirectServeJsonResource):
await self.store.delete_url_cache(removed_media)
if removed_media:
- logger.info("Deleted %d entries from url cache", len(removed_media))
+ logger.debug(
+ "Deleted %d entries from url preview cache", len(removed_media)
+ )
else:
- logger.debug("No entries removed from url cache")
+ logger.debug("No entries removed from url preview cache")
# Now we delete old images associated with the url cache.
# These may be cached for a bit on the client (i.e., they
@@ -733,7 +741,9 @@ class PreviewUrlResource(DirectServeJsonResource):
except FileNotFoundError:
pass # If the path doesn't exist, meh
except OSError as e:
- logger.warning("Failed to remove media: %r: %s", media_id, e)
+ logger.warning(
+ "Failed to remove media from url preview cache: %r: %s", media_id, e
+ )
continue
dirs = self.filepaths.url_cache_filepath_dirs_to_delete(media_id)
@@ -745,7 +755,9 @@ class PreviewUrlResource(DirectServeJsonResource):
except FileNotFoundError:
pass # If the path doesn't exist, meh
except OSError as e:
- logger.warning("Failed to remove media: %r: %s", media_id, e)
+ logger.warning(
+ "Failed to remove media from url preview cache: %r: %s", media_id, e
+ )
continue
removed_media.append(media_id)
@@ -758,9 +770,9 @@ class PreviewUrlResource(DirectServeJsonResource):
await self.store.delete_url_cache_media(removed_media)
if removed_media:
- logger.info("Deleted %d media from url cache", len(removed_media))
+ logger.debug("Deleted %d media from url preview cache", len(removed_media))
else:
- logger.debug("No media removed from url cache")
+ logger.debug("No media removed from url preview cache")
def _is_media(content_type: str) -> bool:
|