Fix appservice timestamp massaging (#5233)

Signed-off-by: Tulir Asokan <tulir@maunium.net>
This commit is contained in:
Tulir Asokan 2019-05-24 16:44:04 +03:00 committed by Andrew Morgan
parent dba9152d15
commit dd64b9dbdd
2 changed files with 7 additions and 1 deletions

1
changelog.d/5233.bugfix Normal file
View File

@ -0,0 +1 @@
Fix appservice timestamp massaging.

View File

@ -76,6 +76,7 @@ class EventBuilder(object):
# someone tries to get them when they don't exist. # someone tries to get them when they don't exist.
_state_key = attr.ib(default=None) _state_key = attr.ib(default=None)
_redacts = attr.ib(default=None) _redacts = attr.ib(default=None)
_origin_server_ts = attr.ib(default=None)
internal_metadata = attr.ib(default=attr.Factory(lambda: _EventInternalMetadata({}))) internal_metadata = attr.ib(default=attr.Factory(lambda: _EventInternalMetadata({})))
@ -142,6 +143,9 @@ class EventBuilder(object):
if self._redacts is not None: if self._redacts is not None:
event_dict["redacts"] = self._redacts event_dict["redacts"] = self._redacts
if self._origin_server_ts is not None:
event_dict["origin_server_ts"] = self._origin_server_ts
defer.returnValue( defer.returnValue(
create_local_event_from_event_dict( create_local_event_from_event_dict(
clock=self._clock, clock=self._clock,
@ -209,6 +213,7 @@ class EventBuilderFactory(object):
content=key_values.get("content", {}), content=key_values.get("content", {}),
unsigned=key_values.get("unsigned", {}), unsigned=key_values.get("unsigned", {}),
redacts=key_values.get("redacts", None), redacts=key_values.get("redacts", None),
origin_server_ts=key_values.get("origin_server_ts", None),
) )
@ -245,7 +250,7 @@ def create_local_event_from_event_dict(clock, hostname, signing_key,
event_dict["event_id"] = _create_event_id(clock, hostname) event_dict["event_id"] = _create_event_id(clock, hostname)
event_dict["origin"] = hostname event_dict["origin"] = hostname
event_dict["origin_server_ts"] = time_now event_dict.setdefault("origin_server_ts", time_now)
event_dict.setdefault("unsigned", {}) event_dict.setdefault("unsigned", {})
age = event_dict["unsigned"].pop("age", 0) age = event_dict["unsigned"].pop("age", 0)