diff --git a/changelog.d/13197.bugfix b/changelog.d/13197.bugfix new file mode 100644 index 000000000..841724152 --- /dev/null +++ b/changelog.d/13197.bugfix @@ -0,0 +1 @@ +Fix exception when using experimental [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event` endpoint to look for remote federated imported events before room creation. diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 75c0be8c3..44f808457 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -1375,6 +1375,7 @@ class TimestampLookupHandler: # the timestamp given and the event we were able to find locally is_event_next_to_backward_gap = False is_event_next_to_forward_gap = False + local_event = None if local_event_id: local_event = await self.store.get_event( local_event_id, allow_none=False, allow_rejected=False @@ -1461,7 +1462,10 @@ class TimestampLookupHandler: ex.args, ) - if not local_event_id: + # To appease mypy, we have to add both of these conditions to check for + # `None`. We only expect `local_event` to be `None` when + # `local_event_id` is `None` but mypy isn't as smart and assuming as us. + if not local_event_id or not local_event: raise SynapseError( 404, "Unable to find event from %s in direction %s" % (timestamp, direction),