summaryrefslogtreecommitdiff
path: root/src/leap
diff options
context:
space:
mode:
authorSriram Viswanathan <sriramv@thoughtworks.com>2017-03-17 17:39:46 -0300
committerKali Kaneko (leap communications) <kali@leap.se>2017-03-31 18:48:56 +0200
commit606289c43713414b0b9ffdb4f233362a8f214243 (patch)
treeba7e9361d62e0eefd1d3cff91a893da793039689 /src/leap
parentb553c65d1d114f2a3a4cb3282b4505838f537421 (diff)
[bug] Log error in case JSON parsing fails for decrypted doc
In addition to the UnicodeError exception in _process_decrypted_doc function, we have added ValueError to the exception list so that we can catch any error in JSON parsing, specially a 'NODATA' error that we were getting with some of the emails. This is in reference to issues - https://github.com/pixelated/pixelated-user-agent/issues/908 & https://github.com/pixelated/pixelated-user-agent/issues/981 - to ignore documents that have this problem and not have Soledad try to sync them again and again. with @deniscostadsc
Diffstat (limited to 'src/leap')
-rw-r--r--src/leap/bitmask/mail/incoming/service.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/leap/bitmask/mail/incoming/service.py b/src/leap/bitmask/mail/incoming/service.py
index e1dde02a..e2baadbe 100644
--- a/src/leap/bitmask/mail/incoming/service.py
+++ b/src/leap/bitmask/mail/incoming/service.py
@@ -337,13 +337,14 @@ class IncomingMail(Service):
"1" if success else "0")
return self._process_decrypted_doc(doc, decrdata)
- def log_doc_id_and_raise_exception(failure):
+ def log_doc_id_and_call_errback(failure):
logger.error(
- '_decrypt_doc: Error decrypting document with ID %s' % doc.doc_id)
+ '_decrypt_doc: Error decrypting document with '
+ 'ID %s' % doc.doc_id)
self._errback(failure)
d = self._keymanager.decrypt(doc.content[ENC_JSON_KEY], self._userid)
- d.addErrback(log_doc_id_and_raise_exception)
+ d.addErrback(log_doc_id_and_call_errback)
d.addCallback(process_decrypted)
d.addCallback(lambda data: (doc, data))
return d
@@ -368,9 +369,9 @@ class IncomingMail(Service):
# the deferreds that would process an individual document
try:
msg = json_loads(data)
- except UnicodeError as exc:
+ except (UnicodeError, ValueError) as exc:
logger.error("Error while decrypting %s" % (doc.doc_id,))
- logger.exception(exc)
+ logger.error(str(exc))
# we flag the message as "with decrypting errors",
# to avoid further decryption attempts during sync