Notify users about invites.
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,
|