Handle string read receipt data (#10606)
* Handle string read receipt data Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Test that we handle string read receipt data Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Add changelog for #10606 Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Add docs Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Ignore malformed RRs Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Only surround hidden = ... Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Remove unnecessary argument Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com> * Update changelog.d/10606.bugfix Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>pull/10611/head
parent
d1f43b731c
commit
a3a7514570
|
@ -0,0 +1 @@
|
||||||
|
Fix errors on /sync when read receipt data is a string. Only affects homeservers with the experimental flag for [MSC2285](https://github.com/matrix-org/matrix-doc/pull/2285) enabled. Contributed by @SimonBrandner.
|
|
@ -188,7 +188,14 @@ class ReceiptEventSource:
|
||||||
|
|
||||||
new_users = {}
|
new_users = {}
|
||||||
for rr_user_id, user_rr in m_read.items():
|
for rr_user_id, user_rr in m_read.items():
|
||||||
hidden = user_rr.get("hidden", None)
|
try:
|
||||||
|
hidden = user_rr.get("hidden")
|
||||||
|
except AttributeError:
|
||||||
|
# Due to https://github.com/matrix-org/synapse/issues/10376
|
||||||
|
# there are cases where user_rr is a string, in those cases
|
||||||
|
# we just ignore the read receipt
|
||||||
|
continue
|
||||||
|
|
||||||
if hidden is not True or rr_user_id == user_id:
|
if hidden is not True or rr_user_id == user_id:
|
||||||
new_users[rr_user_id] = user_rr.copy()
|
new_users[rr_user_id] = user_rr.copy()
|
||||||
# If hidden has a value replace hidden with the correct prefixed key
|
# If hidden has a value replace hidden with the correct prefixed key
|
||||||
|
|
|
@ -286,6 +286,29 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_handles_string_data(self):
|
||||||
|
"""
|
||||||
|
Tests that an invalid shape for read-receipts is handled.
|
||||||
|
Context: https://github.com/matrix-org/synapse/issues/10603
|
||||||
|
"""
|
||||||
|
|
||||||
|
self._test_filters_hidden(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"content": {
|
||||||
|
"$14356419edgd14394fHBLK:matrix.org": {
|
||||||
|
"m.read": {
|
||||||
|
"@rikj:jki.re": "string",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
|
"type": "m.receipt",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[],
|
||||||
|
)
|
||||||
|
|
||||||
def _test_filters_hidden(
|
def _test_filters_hidden(
|
||||||
self, events: List[JsonDict], expected_output: List[JsonDict]
|
self, events: List[JsonDict], expected_output: List[JsonDict]
|
||||||
):
|
):
|
||||||
|
|
Loading…
Reference in New Issue