Actually fix bad debug logging rejecting device list & signing key transactions (#12098)

This commit is contained in:
David Robertson 2022-02-28 14:10:36 +00:00 committed by GitHub
parent 9e83521af8
commit 5565f454e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

1
changelog.d/12098.bugfix Normal file
View File

@ -0,0 +1 @@
Fix a bug introduced in Synapse 1.51.0rc1 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for `synapse.8631_debug`.

View File

@ -110,7 +110,7 @@ class FederationSendServlet(BaseFederationServerServlet):
if issue_8631_logger.isEnabledFor(logging.DEBUG): if issue_8631_logger.isEnabledFor(logging.DEBUG):
DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"] DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"]
device_list_updates = [ device_list_updates = [
edu.content edu.get("content", {})
for edu in transaction_data.get("edus", []) for edu in transaction_data.get("edus", [])
if edu.get("edu_type") in DEVICE_UPDATE_EDUS if edu.get("edu_type") in DEVICE_UPDATE_EDUS
] ]

View File

@ -13,7 +13,7 @@
# limitations under the License. # limitations under the License.
from tests import unittest from tests import unittest
from tests.unittest import override_config from tests.unittest import DEBUG, override_config
class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase): class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase):
@ -38,3 +38,21 @@ class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase):
"/_matrix/federation/v1/publicRooms", "/_matrix/federation/v1/publicRooms",
) )
self.assertEqual(200, channel.code) self.assertEqual(200, channel.code)
@DEBUG
def test_edu_debugging_doesnt_explode(self):
"""Sanity check incoming federation succeeds with `synapse.debug_8631` enabled.
Remove this when we strip out issue_8631_logger.
"""
channel = self.make_signed_federation_request(
"PUT",
"/_matrix/federation/v1/send/txn_id_1234/",
content={
"edus": [
{"edu_type": "m.device_list_update", "content": {"foo": "bar"}}
],
"pdus": [],
},
)
self.assertEqual(200, channel.code)