|
@@ -33,6 +33,7 @@ from synapse.api.errors import (
|
|
IncompatibleRoomVersionError,
|
|
IncompatibleRoomVersionError,
|
|
NotFoundError,
|
|
NotFoundError,
|
|
SynapseError,
|
|
SynapseError,
|
|
|
|
+ UnsupportedRoomVersionError,
|
|
)
|
|
)
|
|
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS
|
|
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS
|
|
from synapse.crypto.event_signing import compute_event_signature
|
|
from synapse.crypto.event_signing import compute_event_signature
|
|
@@ -198,11 +199,22 @@ class FederationServer(FederationBase):
|
|
|
|
|
|
try:
|
|
try:
|
|
room_version = yield self.store.get_room_version(room_id)
|
|
room_version = yield self.store.get_room_version(room_id)
|
|
- format_ver = room_version_to_event_format(room_version)
|
|
|
|
except NotFoundError:
|
|
except NotFoundError:
|
|
logger.info("Ignoring PDU for unknown room_id: %s", room_id)
|
|
logger.info("Ignoring PDU for unknown room_id: %s", room_id)
|
|
continue
|
|
continue
|
|
|
|
|
|
|
|
+ try:
|
|
|
|
+ format_ver = room_version_to_event_format(room_version)
|
|
|
|
+ except UnsupportedRoomVersionError:
|
|
|
|
+ # this can happen if support for a given room version is withdrawn,
|
|
|
|
+ # so that we still get events for said room.
|
|
|
|
+ logger.info(
|
|
|
|
+ "Ignoring PDU for room %s with unknown version %s",
|
|
|
|
+ room_id,
|
|
|
|
+ room_version,
|
|
|
|
+ )
|
|
|
|
+ continue
|
|
|
|
+
|
|
event = event_from_pdu_json(p, format_ver)
|
|
event = event_from_pdu_json(p, format_ver)
|
|
pdus_by_room.setdefault(room_id, []).append(event)
|
|
pdus_by_room.setdefault(room_id, []).append(event)
|
|
|
|
|