diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2020-09-23 16:42:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-23 16:42:14 +0100 |
commit | 302dc89f6a16f69e076943cb0a9b94f1e41741f9 (patch) | |
tree | b1c780f0951acf129c261158be75c5e846c11da6 /synapse/storage | |
parent | Use `async with` for ID gens (#8383) (diff) | |
download | synapse-302dc89f6a16f69e076943cb0a9b94f1e41741f9.tar.xz |
Fix bug which caused failure on join with malformed membership events (#8385)
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/databases/main/events.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py index 7723d82496..18def01f50 100644 --- a/synapse/storage/databases/main/events.py +++ b/synapse/storage/databases/main/events.py @@ -17,7 +17,7 @@ import itertools import logging from collections import OrderedDict, namedtuple -from typing import TYPE_CHECKING, Dict, Iterable, List, Set, Tuple +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Set, Tuple import attr from prometheus_client import Counter @@ -1108,6 +1108,10 @@ class PersistEventsStore: def _store_room_members_txn(self, txn, events, backfilled): """Store a room member in the database. """ + + def str_or_none(val: Any) -> Optional[str]: + return val if isinstance(val, str) else None + self.db_pool.simple_insert_many_txn( txn, table="room_memberships", @@ -1118,8 +1122,8 @@ class PersistEventsStore: "sender": event.user_id, "room_id": event.room_id, "membership": event.membership, - "display_name": event.content.get("displayname", None), - "avatar_url": event.content.get("avatar_url", None), + "display_name": str_or_none(event.content.get("displayname")), + "avatar_url": str_or_none(event.content.get("avatar_url")), } for event in events ], |