Enable room version v3
							parent
							
								
									e12313ba25
								
							
						
					
					
						commit
						a1b0e1879b
					
				| 
						 | 
				
			
			@ -104,7 +104,7 @@ class ThirdPartyEntityKind(object):
 | 
			
		|||
class RoomVersions(object):
 | 
			
		||||
    V1 = "1"
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +116,7 @@ DEFAULT_ROOM_VERSION = RoomVersions.V1
 | 
			
		|||
KNOWN_ROOM_VERSIONS = {
 | 
			
		||||
    RoomVersions.V1,
 | 
			
		||||
    RoomVersions.V2,
 | 
			
		||||
    RoomVersions.V3,
 | 
			
		||||
    RoomVersions.STATE_V2_TEST,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -346,6 +346,8 @@ def room_version_to_event_format(room_version):
 | 
			
		|||
        RoomVersions.V1, RoomVersions.V2, RoomVersions.STATE_V2_TEST,
 | 
			
		||||
    ):
 | 
			
		||||
        return EventFormatVersions.V1
 | 
			
		||||
    elif room_version in (RoomVersions.V3,):
 | 
			
		||||
        return EventFormatVersions.V2
 | 
			
		||||
    else:
 | 
			
		||||
        raise RuntimeError("Unrecognized room version %s" % (room_version,))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ import six
 | 
			
		|||
from twisted.internet import defer
 | 
			
		||||
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.crypto.event_signing import check_event_content_hash
 | 
			
		||||
from synapse.events import event_type_from_format_version
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
    # 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
 | 
			
		||||
    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 = [
 | 
			
		||||
            p for p in pdus_to_check
 | 
			
		||||
            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):
 | 
			
		|||
 | 
			
		||||
        for p, d in zip(pdus_to_check_event_id, more_deferreds):
 | 
			
		||||
            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
 | 
			
		||||
    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
 | 
			
		|||
            state_sets, event_map, state_res_store.get_events,
 | 
			
		||||
        )
 | 
			
		||||
    elif room_version in (
 | 
			
		||||
        RoomVersions.STATE_V2_TEST, RoomVersions.V2,
 | 
			
		||||
        RoomVersions.STATE_V2_TEST, RoomVersions.V2, RoomVersions.V3,
 | 
			
		||||
    ):
 | 
			
		||||
        return v2.resolve_events_with_store(
 | 
			
		||||
            room_version, state_sets, event_map, state_res_store,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue