Merge pull request #3859 from matrix-org/erikj/add_iterkeys

Fix handling of redacted events from federation
pull/3576/head
Amber Brown 2018-09-14 01:06:44 +10:00 committed by GitHub
commit cb64fe2cb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 1 deletions

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

@ -0,0 +1 @@
Fix handling of redacted events from federation

View File

@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import six
from synapse.util.caches import intern_dict from synapse.util.caches import intern_dict
from synapse.util.frozenutils import freeze from synapse.util.frozenutils import freeze
@ -147,6 +149,9 @@ class EventBase(object):
def items(self): def items(self):
return list(self._event_dict.items()) return list(self._event_dict.items())
def keys(self):
return six.iterkeys(self._event_dict)
class FrozenEvent(EventBase): class FrozenEvent(EventBase):
def __init__(self, event_dict, internal_metadata_dict={}, rejected_reason=None): def __init__(self, event_dict, internal_metadata_dict={}, rejected_reason=None):

View File

@ -153,7 +153,7 @@ class FederationBase(object):
# *actual* redacted copy to be on the safe side.) # *actual* redacted copy to be on the safe side.)
redacted_event = prune_event(pdu) redacted_event = prune_event(pdu)
if ( if (
set(six.iterkeys(redacted_event)) == set(six.iterkeys(pdu)) and set(redacted_event.keys()) == set(pdu.keys()) and
set(six.iterkeys(redacted_event.content)) set(six.iterkeys(redacted_event.content))
== set(six.iterkeys(pdu.content)) == set(six.iterkeys(pdu.content))
): ):