1
0

Log more information when media is ratelimited by size

This commit is contained in:
Olivier 'reivilibre
2025-11-25 16:52:40 +00:00
parent facb81d97b
commit 92da22ddc8

View File

@@ -1525,14 +1525,16 @@ class MatrixFederationHttpClient:
)
if not send_req:
msg = "Requested file size exceeds ratelimits"
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file size exceeds ratelimits (minimum balance)",
request.txn_id,
request.destination,
msg,
)
raise SynapseError(HTTPStatus.TOO_MANY_REQUESTS, msg, Codes.LIMIT_EXCEEDED)
raise SynapseError(
HTTPStatus.TOO_MANY_REQUESTS,
"Requested file size exceeds ratelimits",
Codes.LIMIT_EXCEEDED,
)
response = await self._send_request(
request,
@@ -1548,14 +1550,17 @@ class MatrixFederationHttpClient:
expected_size = max_size
else:
if int(expected_size) > max_size:
msg = "Requested file is too large > %r bytes" % (max_size,)
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file is too large > %r bytes",
request.txn_id,
request.destination,
msg,
max_size,
)
raise SynapseError(
HTTPStatus.BAD_GATEWAY,
f"Requested file is too large > {max_size} bytes",
Codes.TOO_LARGE,
)
raise SynapseError(HTTPStatus.BAD_GATEWAY, msg, Codes.TOO_LARGE)
read_body, _ = await download_ratelimiter.can_do_action(
requester=None,
@@ -1563,15 +1568,16 @@ class MatrixFederationHttpClient:
n_actions=expected_size,
)
if not read_body:
msg = "Requested file size exceeds ratelimits"
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file size (%r bytes) exceeds ratelimits",
request.txn_id,
request.destination,
msg,
expected_size,
)
raise SynapseError(
HTTPStatus.TOO_MANY_REQUESTS, msg, Codes.LIMIT_EXCEEDED
HTTPStatus.TOO_MANY_REQUESTS,
"Requested file size exceeds ratelimits",
Codes.LIMIT_EXCEEDED,
)
try:
@@ -1686,14 +1692,16 @@ class MatrixFederationHttpClient:
)
if not send_req:
msg = "Requested file size exceeds ratelimits"
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file size exceeds ratelimits (minimum balance)",
request.txn_id,
request.destination,
msg,
)
raise SynapseError(HTTPStatus.TOO_MANY_REQUESTS, msg, Codes.LIMIT_EXCEEDED)
raise SynapseError(
HTTPStatus.TOO_MANY_REQUESTS,
"Requested file size exceeds ratelimits",
Codes.LIMIT_EXCEEDED,
)
response = await self._send_request(
request,
@@ -1708,14 +1716,17 @@ class MatrixFederationHttpClient:
expected_size = max_size
else:
if int(expected_size) > max_size:
msg = "Requested file is too large > %r bytes" % (max_size,)
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file is too large > %r bytes",
request.txn_id,
request.destination,
msg,
max_size,
)
raise SynapseError(
HTTPStatus.BAD_GATEWAY,
f"Requested file is too large > {max_size!r} bytes",
Codes.TOO_LARGE,
)
raise SynapseError(HTTPStatus.BAD_GATEWAY, msg, Codes.TOO_LARGE)
read_body, _ = await download_ratelimiter.can_do_action(
requester=None,
@@ -1723,15 +1734,16 @@ class MatrixFederationHttpClient:
n_actions=expected_size,
)
if not read_body:
msg = "Requested file size exceeds ratelimits"
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file size (%r bytes) exceeds ratelimits",
request.txn_id,
request.destination,
msg,
int(expected_size),
)
raise SynapseError(
HTTPStatus.TOO_MANY_REQUESTS, msg, Codes.LIMIT_EXCEEDED
HTTPStatus.TOO_MANY_REQUESTS,
f"Requested file size ({expected_size!r} bytes) exceeds ratelimits",
Codes.LIMIT_EXCEEDED,
)
# this should be a multipart/mixed response with the boundary string in the header
@@ -1742,14 +1754,15 @@ class MatrixFederationHttpClient:
content_type_parts = content_type.split("boundary=")
boundary = content_type_parts[1]
except Exception:
msg = "Remote response is malformed: expected Content-Type of multipart/mixed with a boundary present."
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Remote response is malformed: expected Content-Type of multipart/mixed with a boundary present.",
request.txn_id,
request.destination,
msg,
)
raise SynapseError(HTTPStatus.BAD_GATEWAY, msg)
raise SynapseError(
HTTPStatus.BAD_GATEWAY,
"Remote response is malformed: expected Content-Type of multipart/mixed with a boundary present.",
)
try:
async with self.remote_download_linearizer.queue(ip_address):
@@ -1759,14 +1772,17 @@ class MatrixFederationHttpClient:
)
deferred.addTimeout(self.default_timeout_seconds, self.reactor)
except BodyExceededMaxSize:
msg = "Requested file is too large > %r bytes" % (expected_size,)
logger.warning(
"{%s} [%s] %s",
"{%s} [%s] Requested file is too large > %r bytes",
request.txn_id,
request.destination,
msg,
expected_size,
)
raise SynapseError(
HTTPStatus.BAD_GATEWAY,
f"Requested file is too large > {expected_size!r} bytes",
Codes.TOO_LARGE,
)
raise SynapseError(HTTPStatus.BAD_GATEWAY, msg, Codes.TOO_LARGE)
except defer.TimeoutError as e:
logger.warning(
"{%s} [%s] Timed out reading response - %s %s",