diff --git a/synapse/events/snapshot.py b/synapse/events/snapshot.py
index 6be18880b9..e9a732ff03 100644
--- a/synapse/events/snapshot.py
+++ b/synapse/events/snapshot.py
@@ -50,6 +50,7 @@ class EventContext(object):
"prev_group",
"delta_ids",
"prev_state_events",
+ "app_service",
]
def __init__(self):
@@ -68,3 +69,5 @@ class EventContext(object):
self.delta_ids = None
self.prev_state_events = None
+
+ self.app_service = None
diff --git a/synapse/events/utils.py b/synapse/events/utils.py
index 5bbaef8187..824f4a42e3 100644
--- a/synapse/events/utils.py
+++ b/synapse/events/utils.py
@@ -225,7 +225,22 @@ def format_event_for_client_v2_without_room_id(d):
def serialize_event(e, time_now_ms, as_client_event=True,
event_format=format_event_for_client_v1,
- token_id=None, only_event_fields=None):
+ token_id=None, only_event_fields=None, is_invite=False):
+ """Serialize event for clients
+
+ Args:
+ e (EventBase)
+ time_now_ms (int)
+ as_client_event (bool)
+ event_format
+ token_id
+ only_event_fields
+ is_invite (bool): Whether this is an invite that is being sent to the
+ invitee
+
+ Returns:
+ dict
+ """
# FIXME(erikj): To handle the case of presence events and the like
if not isinstance(e, EventBase):
return e
@@ -251,6 +266,12 @@ def serialize_event(e, time_now_ms, as_client_event=True,
if txn_id is not None:
d["unsigned"]["transaction_id"] = txn_id
+ # If this is an invite for somebody else, then we don't care about the
+ # invite_room_state as that's meant solely for the invitee. Other clients
+ # will already have the state since they're in the room.
+ if not is_invite:
+ d["unsigned"].pop("invite_room_state", None)
+
if as_client_event:
d = event_format(d)
|