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

pull/12089/head
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):
DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"]
device_list_updates = [
edu.content
edu.get("content", {})
for edu in transaction_data.get("edus", [])
if edu.get("edu_type") in DEVICE_UPDATE_EDUS
]

View File

@ -13,7 +13,7 @@
# limitations under the License.
from tests import unittest
from tests.unittest import override_config
from tests.unittest import DEBUG, override_config
class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase):
@ -38,3 +38,21 @@ class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase):
"/_matrix/federation/v1/publicRooms",
)
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)