forked from MirrorHub/synapse
Fix noop checks when updating device keys
Clients often reupload their device keys (for some reason) so its important for the server to check for no-ops before sending out device list update notifications. The check is broken in python 3 due to the fact comparing bytes and unicode always fails, and that we write bytes to the DB but get unicode when we read.
This commit is contained in:
parent
264cb14402
commit
b1a22b24ab
1 changed files with 5 additions and 0 deletions
|
@ -40,6 +40,11 @@ class EndToEndKeyStore(SQLBaseStore):
|
||||||
allow_none=True,
|
allow_none=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if old_key_json and not isinstance(old_key_json, bytes):
|
||||||
|
# In py3 we need old_key_json to match new_key_json type. The DB
|
||||||
|
# returns unicode while encode_canonical_json returns bytes
|
||||||
|
old_key_json = old_key_json.encode("utf-8")
|
||||||
|
|
||||||
new_key_json = encode_canonical_json(device_keys)
|
new_key_json = encode_canonical_json(device_keys)
|
||||||
if old_key_json == new_key_json:
|
if old_key_json == new_key_json:
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Reference in a new issue