@@ -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