diff --git a/synapse/appservice/__init__.py b/synapse/appservice/__init__.py
index 7dbebd97b5..a340a8c9c7 100644
--- a/synapse/appservice/__init__.py
+++ b/synapse/appservice/__init__.py
@@ -165,23 +165,16 @@ class ApplicationService:
return namespace.exclusive
return False
- async def _matches_user(
- self, event: Optional[EventBase], store: Optional["DataStore"] = None
- ) -> bool:
- if not event:
- return False
-
+ async def _matches_user(self, event: EventBase, store: "DataStore") -> bool:
if self.is_interested_in_user(event.sender):
return True
+
# also check m.room.member state key
if event.type == EventTypes.Member and self.is_interested_in_user(
event.state_key
):
return True
- if not store:
- return False
-
does_match = await self.matches_user_in_member_list(event.room_id, store)
return does_match
@@ -216,21 +209,15 @@ class ApplicationService:
return self.is_interested_in_room(event.room_id)
return False
- async def _matches_aliases(
- self, event: EventBase, store: Optional["DataStore"] = None
- ) -> bool:
- if not store or not event:
- return False
-
+ async def _matches_aliases(self, event: EventBase, store: "DataStore") -> bool:
alias_list = await store.get_aliases_for_room(event.room_id)
for alias in alias_list:
if self.is_interested_in_alias(alias):
return True
+
return False
- async def is_interested(
- self, event: EventBase, store: Optional["DataStore"] = None
- ) -> bool:
+ async def is_interested(self, event: EventBase, store: "DataStore") -> bool:
"""Check if this service is interested in this event.
Args:
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py
index 0fb919acf6..a42c3558e4 100644
--- a/synapse/handlers/appservice.py
+++ b/synapse/handlers/appservice.py
@@ -649,7 +649,7 @@ class ApplicationServicesHandler:
"""Retrieve a list of application services interested in this event.
Args:
- event: The event to check. Can be None if alias_list is not.
+ event: The event to check.
Returns:
A list of services interested in this event based on the service regex.
"""
diff --git a/synapse/handlers/typing.py b/synapse/handlers/typing.py
index e43c22832d..e4bed1c937 100644
--- a/synapse/handlers/typing.py
+++ b/synapse/handlers/typing.py
@@ -446,7 +446,7 @@ class TypingWriterHandler(FollowerTypingHandler):
class TypingNotificationEventSource(EventSource[int, JsonDict]):
def __init__(self, hs: "HomeServer"):
- self.hs = hs
+ self._main_store = hs.get_datastore()
self.clock = hs.get_clock()
# We can't call get_typing_handler here because there's a cycle:
#
@@ -487,7 +487,7 @@ class TypingNotificationEventSource(EventSource[int, JsonDict]):
continue
if not await service.matches_user_in_member_list(
- room_id, handler.store
+ room_id, self._main_store
):
continue
diff --git a/synapse/rest/media/v1/upload_resource.py b/synapse/rest/media/v1/upload_resource.py
index 8162094cf6..fde28d08cb 100644
--- a/synapse/rest/media/v1/upload_resource.py
+++ b/synapse/rest/media/v1/upload_resource.py
@@ -49,10 +49,14 @@ class UploadResource(DirectServeJsonResource):
async def _async_render_POST(self, request: SynapseRequest) -> None:
requester = await self.auth.get_user_by_req(request)
- content_length = request.getHeader("Content-Length")
- if content_length is None:
+ raw_content_length = request.getHeader("Content-Length")
+ if raw_content_length is None:
raise SynapseError(msg="Request must specify a Content-Length", code=400)
- if int(content_length) > self.max_upload_size:
+ try:
+ content_length = int(raw_content_length)
+ except ValueError:
+ raise SynapseError(msg="Content-Length value is invalid", code=400)
+ if content_length > self.max_upload_size:
raise SynapseError(
msg="Upload request body is too large",
code=413,
@@ -66,7 +70,8 @@ class UploadResource(DirectServeJsonResource):
upload_name: Optional[str] = upload_name_bytes.decode("utf8")
except UnicodeDecodeError:
raise SynapseError(
- msg="Invalid UTF-8 filename parameter: %r" % (upload_name), code=400
+ msg="Invalid UTF-8 filename parameter: %r" % (upload_name_bytes,),
+ code=400,
)
# If the name is falsey (e.g. an empty byte string) ensure it is None.
|