|
1 | 1 | import logging
|
2 | 2 |
|
3 | 3 | from abc import abstractmethod
|
| 4 | + |
| 5 | +from .enums import PNStatusCategory, PNOperationType |
| 6 | +from .models.consumer.common import PNStatus |
| 7 | +from .models.consumer.pn_error_data import PNErrorData |
4 | 8 | from .utils import strip_right
|
5 | 9 | from .models.consumer.pubsub import PNPresenceEventResult, PNMessageResult, PNSignalMessageResult, PNMessageActionResult
|
6 | 10 | from .models.server.subscribe import SubscribeMessage, PresenceEnvelope
|
@@ -39,7 +43,17 @@ def _process_message(self, message_input):
|
39 | 43 | if self._pubnub.config.cipher_key is None:
|
40 | 44 | return message_input
|
41 | 45 | else:
|
42 |
| - return self._pubnub.config.crypto.decrypt(self._pubnub.config.cipher_key, message_input) |
| 46 | + try: |
| 47 | + return self._pubnub.config.crypto.decrypt(self._pubnub.config.cipher_key, message_input) |
| 48 | + except Exception as exception: |
| 49 | + logger.warning("could not decrypt message: \"%s\", due to error %s" % (message_input, str(exception))) |
| 50 | + pn_status = PNStatus() |
| 51 | + pn_status.category = PNStatusCategory.PNDecryptionErrorCategory |
| 52 | + pn_status.error_data = PNErrorData(str(exception), exception) |
| 53 | + pn_status.error = True |
| 54 | + pn_status.operation = PNOperationType.PNSubscribeOperation |
| 55 | + self._listener_manager.announce_status(pn_status) |
| 56 | + return message_input |
43 | 57 |
|
44 | 58 | def _process_incoming_payload(self, message):
|
45 | 59 | assert isinstance(message, SubscribeMessage)
|
|
0 commit comments