summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-11-10 11:15:02 +0000
committerErik Johnston <erik@matrix.org>2014-11-10 11:15:02 +0000
commit65f846ade09feba129a14b2b9714c2ad51d00f0a (patch)
tree9f7d99af9832ad64df1a649ee9a45c63396ef049
parentFix invite auth (diff)
downloadsynapse-65f846ade09feba129a14b2b9714c2ad51d00f0a.tar.xz
Notify users about invites.
-rw-r--r--synapse/api/auth.py16
-rw-r--r--synapse/handlers/federation.py5
-rw-r--r--synapse/storage/stream.py3
3 files changed, 14 insertions, 10 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py
index 077d1ab0bf..3e5d878eed 100644
--- a/synapse/api/auth.py
+++ b/synapse/api/auth.py
@@ -337,15 +337,17 @@ class Auth(object):
         if join_rule_event:
             join_rule = join_rule_event.content.get("join_rule")
             is_public = join_rule == JoinRules.PUBLIC if join_rule else False
+        else:
+            is_public = False
 
-            if event.type == RoomMemberEvent.TYPE:
-                if event.content["membership"] == Membership.JOIN:
-                    if is_public:
-                        auth_events.append(join_rule_event.event_id)
-                elif member_event:
-                    auth_events.append(member_event.event_id)
+        if event.type == RoomMemberEvent.TYPE:
+            e_type = event.content["membership"]
+            if e_type in [Membership.JOIN, Membership.INVITE]:
+                auth_events.append(join_rule_event.event_id)
 
-        if member_event:
+                if member_event and not is_public:
+                    auth_events.append(member_event.event_id)
+        elif member_event:
             if member_event.content["membership"] == Membership.JOIN:
                 auth_events.append(member_event.event_id)
 
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index 7e10583902..9a59fe94d2 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -431,7 +431,10 @@ class FederationHandler(BaseHandler):
             backfilled=False,
         )
 
-        yield self.notifier.on_new_room_event(event)
+        target_user = self.hs.parse_userid(event.state_key)
+        yield self.notifier.on_new_room_event(
+            event, extra_users=[target_user],
+        )
 
         defer.returnValue(self.pdu_codec.pdu_from_event(event))
 
diff --git a/synapse/storage/stream.py b/synapse/storage/stream.py
index 8f7f61d29d..475e7f20a1 100644
--- a/synapse/storage/stream.py
+++ b/synapse/storage/stream.py
@@ -177,10 +177,9 @@ class StreamStore(SQLBaseStore):
 
         sql = (
             "SELECT *, (%(redacted)s) AS redacted FROM events AS e WHERE "
-            "((room_id IN (%(current)s)) OR "
+            "(e.outlier = 0 AND (room_id IN (%(current)s)) OR "
             "(event_id IN (%(invites)s))) "
             "AND e.stream_ordering > ? AND e.stream_ordering <= ? "
-            "AND e.outlier = 0 "
             "ORDER BY stream_ordering ASC LIMIT %(limit)d "
         ) % {
             "redacted": del_sql,