summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-10-17 19:37:41 +0100
committerErik Johnston <erik@matrix.org>2014-10-17 19:37:41 +0100
commitb3b19614962d78e7851299ff1f7b41706ced3d00 (patch)
treee5f361f10d133e68f478a0c622642d250d92750e /synapse/handlers
parentUse state groups to get current state. Make join dance actually work. (diff)
downloadsynapse-b3b19614962d78e7851299ff1f7b41706ced3d00.tar.xz
Fix bug where people could join private rooms
Diffstat (limited to '')
-rw-r--r--synapse/handlers/federation.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index 70790aaa72..8c80a37164 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -269,12 +269,12 @@ class FederationHandler(BaseHandler):
         del self.room_queues[room_id]
 
         for p in room_queue:
-            p.outlier = True
             yield self.on_receive_pdu(p, backfilled=False)
 
         defer.returnValue(True)
 
     @defer.inlineCallbacks
+    @log_function
     def on_make_join_request(self, context, user_id):
         event = self.event_factory.create_event(
             etype=RoomMemberEvent.TYPE,
@@ -289,15 +289,21 @@ class FederationHandler(BaseHandler):
         )
         snapshot.fill_out_prev_events(event)
 
+        yield self.state_handler.annotate_state_groups(event)
+        yield self.auth.check(event, None, raises=True)
+
         pdu = self.pdu_codec.pdu_from_event(event)
 
         defer.returnValue(pdu)
 
     @defer.inlineCallbacks
+    @log_function
     def on_send_join_request(self, origin, pdu):
         event = self.pdu_codec.event_from_pdu(pdu)
 
-        is_new_state= yield self.state_handler.annotate_state_groups(event)
+        event.outlier = False
+
+        is_new_state = yield self.state_handler.annotate_state_groups(event)
         yield self.auth.check(event, None, raises=True)
 
         # FIXME (erikj):  All this is duplicated above :(