diff --git a/matrix/encryption.py b/matrix/encryption.py index 28e684a..f2c826b 100644 --- a/matrix/encryption.py +++ b/matrix/encryption.py @@ -222,11 +222,14 @@ class Olm(): continue plaintext = session.decrypt(message) - break + return plaintext except OlmSessionError: pass - session = self._create_session(sender, sender_key, message) + try: + session = self._create_session(sender, sender_key, message) + except OlmSessionError: + return None try: plaintext = session.decrypt(message) diff --git a/matrix/events.py b/matrix/events.py index e3127e2..4af350a 100644 --- a/matrix/events.py +++ b/matrix/events.py @@ -475,6 +475,9 @@ class MatrixSyncEvent(MatrixEvent): olm = server.olm plaintext = olm.decrypt(sender, sender_key, message) + if not plaintext: + return None + # TODO check sender key parsed_plaintext = json.loads(plaintext, encoding='utf-8') decrypted_sender = parsed_plaintext["sender"]