Skip to content

Commit c7db206

Browse files
committed
Don't fiddle with results returned by event sources
Overwriting hashes returned by other methods is poor form. Fixes: SYN-516
1 parent 9107ed2 commit c7db206

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

synapse/handlers/sync.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,13 @@ def ephemeral_by_room(self, sync_config, now_token, since_token=None):
311311
ephemeral_by_room = {}
312312

313313
for event in typing:
314-
room_id = event.pop("room_id")
315-
ephemeral_by_room.setdefault(room_id, []).append(event)
314+
# we want to exclude the room_id from the event, but modifying the
315+
# result returned by the event source is poor form (it might cache
316+
# the object)
317+
room_id = event["room_id"]
318+
event_copy = {k: v for (k, v) in event.iteritems()
319+
if k != "room_id"}
320+
ephemeral_by_room.setdefault(room_id, []).append(event_copy)
316321

317322
receipt_key = since_token.receipt_key if since_token else "0"
318323

@@ -328,8 +333,11 @@ def ephemeral_by_room(self, sync_config, now_token, since_token=None):
328333
now_token = now_token.copy_and_replace("receipt_key", receipt_key)
329334

330335
for event in receipts:
331-
room_id = event.pop("room_id")
332-
ephemeral_by_room.setdefault(room_id, []).append(event)
336+
room_id = event["room_id"]
337+
# exclude room id, as above
338+
event_copy = {k: v for (k, v) in event.iteritems()
339+
if k != "room_id"}
340+
ephemeral_by_room.setdefault(room_id, []).append(event_copy)
333341

334342
defer.returnValue((now_token, ephemeral_by_room))
335343

0 commit comments

Comments
 (0)