summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-01-07 16:09:00 +0000
committerKegan Dougal <kegan@matrix.org>2015-01-07 16:09:00 +0000
commit4c68460392ef032b156b8d006f4aec5496ceedcb (patch)
tree29e51118deba86377b44aa0b3220b2cb2568670b /synapse/handlers
parentSYN-154: Better error messages when joining an unknown room by ID. (diff)
downloadsynapse-4c68460392ef032b156b8d006f4aec5496ceedcb.tar.xz
SYN-154: Tweak how the m.room.create check is done.
Don't perform the check in auth.is_host_in_room but instead do it in _do_join
and also assert that there are no m.room.members in the room before doing so.
Diffstat (limited to 'synapse/handlers')
-rw-r--r--synapse/handlers/room.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index 3cb7e324fc..16c6628292 100644
--- a/synapse/handlers/room.py
+++ b/synapse/handlers/room.py
@@ -423,9 +423,18 @@ class RoomMemberHandler(BaseHandler):
 
         is_host_in_room = yield self.auth.check_host_in_room(
             event.room_id,
-            self.hs.hostname,
-            context=context
+            self.hs.hostname
         )
+        if not is_host_in_room:
+            # is *anyone* in the room?
+            room_member_keys = [
+                v for (k,v) in context.current_state.keys() if k == "m.room.member"
+            ]
+            if len(room_member_keys) == 0:
+                # has the room been created so we can join it?
+                create_event = context.current_state.get(("m.room.create", ""))
+                if create_event:
+                    is_host_in_room = True
 
         if is_host_in_room:
             should_do_dance = False