Skip to content
Snippets Groups Projects
Commit a1b0e187 authored by Erik Johnston's avatar Erik Johnston
Browse files

Enable room version v3

parent e12313ba
Branches
Tags
No related merge requests found
...@@ -104,7 +104,7 @@ class ThirdPartyEntityKind(object): ...@@ -104,7 +104,7 @@ class ThirdPartyEntityKind(object):
class RoomVersions(object): class RoomVersions(object):
V1 = "1" V1 = "1"
V2 = "2" V2 = "2"
V3 = "3" # Not currently fully supported, so we don't add to known versions below V3 = "3"
STATE_V2_TEST = "state-v2-test" STATE_V2_TEST = "state-v2-test"
...@@ -116,6 +116,7 @@ DEFAULT_ROOM_VERSION = RoomVersions.V1 ...@@ -116,6 +116,7 @@ DEFAULT_ROOM_VERSION = RoomVersions.V1
KNOWN_ROOM_VERSIONS = { KNOWN_ROOM_VERSIONS = {
RoomVersions.V1, RoomVersions.V1,
RoomVersions.V2, RoomVersions.V2,
RoomVersions.V3,
RoomVersions.STATE_V2_TEST, RoomVersions.STATE_V2_TEST,
} }
......
...@@ -346,6 +346,8 @@ def room_version_to_event_format(room_version): ...@@ -346,6 +346,8 @@ def room_version_to_event_format(room_version):
RoomVersions.V1, RoomVersions.V2, RoomVersions.STATE_V2_TEST, RoomVersions.V1, RoomVersions.V2, RoomVersions.STATE_V2_TEST,
): ):
return EventFormatVersions.V1 return EventFormatVersions.V1
elif room_version in (RoomVersions.V3,):
return EventFormatVersions.V2
else: else:
raise RuntimeError("Unrecognized room version %s" % (room_version,)) raise RuntimeError("Unrecognized room version %s" % (room_version,))
......
...@@ -20,7 +20,7 @@ import six ...@@ -20,7 +20,7 @@ import six
from twisted.internet import defer from twisted.internet import defer
from twisted.internet.defer import DeferredList from twisted.internet.defer import DeferredList
from synapse.api.constants import KNOWN_ROOM_VERSIONS, MAX_DEPTH, EventTypes, Membership from synapse.api.constants import MAX_DEPTH, EventTypes, Membership, RoomVersions
from synapse.api.errors import Codes, SynapseError from synapse.api.errors import Codes, SynapseError
from synapse.crypto.event_signing import check_event_content_hash from synapse.crypto.event_signing import check_event_content_hash
from synapse.events import event_type_from_format_version from synapse.events import event_type_from_format_version
...@@ -274,7 +274,10 @@ def _check_sigs_on_pdus(keyring, room_version, pdus): ...@@ -274,7 +274,10 @@ def _check_sigs_on_pdus(keyring, room_version, pdus):
# now let's look for events where the sender's domain is different to the # now let's look for events where the sender's domain is different to the
# event id's domain (normally only the case for joins/leaves), and add additional # event id's domain (normally only the case for joins/leaves), and add additional
# checks. Only do this if the room version has a concept of event ID domain # checks. Only do this if the room version has a concept of event ID domain
if room_version in KNOWN_ROOM_VERSIONS: if room_version in (
RoomVersions.V1, RoomVersions.V2, RoomVersions.VDH_TEST,
RoomVersions.STATE_V2_TEST,
):
pdus_to_check_event_id = [ pdus_to_check_event_id = [
p for p in pdus_to_check p for p in pdus_to_check
if p.sender_domain != get_domain_from_id(p.pdu.event_id) if p.sender_domain != get_domain_from_id(p.pdu.event_id)
...@@ -287,6 +290,10 @@ def _check_sigs_on_pdus(keyring, room_version, pdus): ...@@ -287,6 +290,10 @@ def _check_sigs_on_pdus(keyring, room_version, pdus):
for p, d in zip(pdus_to_check_event_id, more_deferreds): for p, d in zip(pdus_to_check_event_id, more_deferreds):
p.deferreds.append(d) p.deferreds.append(d)
elif room_version in (RoomVersions.V3,):
pass # No further checks needed, as event IDs are hashes here
else:
raise RuntimeError("Unrecognized room version %s" % (room_version,))
# replace lists of deferreds with single Deferreds # replace lists of deferreds with single Deferreds
return [_flatten_deferred_list(p.deferreds) for p in pdus_to_check] return [_flatten_deferred_list(p.deferreds) for p in pdus_to_check]
......
...@@ -608,7 +608,7 @@ def resolve_events_with_store(room_version, state_sets, event_map, state_res_sto ...@@ -608,7 +608,7 @@ def resolve_events_with_store(room_version, state_sets, event_map, state_res_sto
state_sets, event_map, state_res_store.get_events, state_sets, event_map, state_res_store.get_events,
) )
elif room_version in ( elif room_version in (
RoomVersions.STATE_V2_TEST, RoomVersions.V2, RoomVersions.STATE_V2_TEST, RoomVersions.V2, RoomVersions.V3,
): ):
return v2.resolve_events_with_store( return v2.resolve_events_with_store(
room_version, state_sets, event_map, state_res_store, room_version, state_sets, event_map, state_res_store,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment