Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 302dc89

Browse files
authored
Fix bug which caused failure on join with malformed membership events (#8385)
1 parent cbabb31 commit 302dc89

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

changelog.d/8385.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix a bug which could cause errors in rooms with malformed membership events, on servers using sqlite.

synapse/storage/databases/main/events.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import itertools
1818
import logging
1919
from collections import OrderedDict, namedtuple
20-
from typing import TYPE_CHECKING, Dict, Iterable, List, Set, Tuple
20+
from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Set, Tuple
2121

2222
import attr
2323
from prometheus_client import Counter
@@ -1108,6 +1108,10 @@ def _store_event_reference_hashes_txn(self, txn, events):
11081108
def _store_room_members_txn(self, txn, events, backfilled):
11091109
"""Store a room member in the database.
11101110
"""
1111+
1112+
def str_or_none(val: Any) -> Optional[str]:
1113+
return val if isinstance(val, str) else None
1114+
11111115
self.db_pool.simple_insert_many_txn(
11121116
txn,
11131117
table="room_memberships",
@@ -1118,8 +1122,8 @@ def _store_room_members_txn(self, txn, events, backfilled):
11181122
"sender": event.user_id,
11191123
"room_id": event.room_id,
11201124
"membership": event.membership,
1121-
"display_name": event.content.get("displayname", None),
1122-
"avatar_url": event.content.get("avatar_url", None),
1125+
"display_name": str_or_none(event.content.get("displayname")),
1126+
"avatar_url": str_or_none(event.content.get("avatar_url")),
11231127
}
11241128
for event in events
11251129
],

0 commit comments

Comments
 (0)