Skip to content

Commit f9a648d

Browse files
committed
Message decoding exception handler fix
- was unfinished and caused the object processor thread to crash
1 parent 3ad94cb commit f9a648d

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/class_objectProcessor.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,10 @@ def processmsg(self, data):
509509
if toLabel == '':
510510
toLabel = toAddress
511511

512-
decodedMessage = helper_msgcoding.MsgDecode(messageEncodingType, message)
512+
try:
513+
decodedMessage = helper_msgcoding.MsgDecode(messageEncodingType, message)
514+
except helper_msgcoding.MsgDecodeException:
515+
return
513516
subject = decodedMessage.subject
514517
body = decodedMessage.body
515518

@@ -761,7 +764,10 @@ def processbroadcast(self, data):
761764
sendersAddressVersion, sendersStream, calculatedRipe)
762765
logger.debug('fromAddress: ' + fromAddress)
763766

764-
decodedMessage = helper_msgcoding.MsgDecode(messageEncodingType, message)
767+
try:
768+
decodedMessage = helper_msgcoding.MsgDecode(messageEncodingType, message)
769+
except helper_msgcoding.MsgDecodeException:
770+
return
765771
subject = decodedMessage.subject
766772
body = decodedMessage.body
767773

src/helper_msgcoding.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,15 @@
2121
BITMESSAGE_ENCODING_EXTENDED = 3
2222

2323

24-
class DecompressionSizeException(Exception):
24+
class MsgEncodeException(Exception):
25+
pass
26+
27+
28+
class MsgDecodeException(Exception):
29+
pass
30+
31+
32+
class DecompressionSizeException(MsgDecodeException):
2533
def __init__(self, size):
2634
self.size = size
2735

@@ -38,18 +46,18 @@ def __init__(self, message, encoding=BITMESSAGE_ENCODING_SIMPLE):
3846
elif self.encoding == BITMESSAGE_ENCODING_TRIVIAL:
3947
self.encodeTrivial(message)
4048
else:
41-
raise ValueError("Unknown encoding %i" % (encoding))
49+
raise MsgEncodeException("Unknown encoding %i" % (encoding))
4250

4351
def encodeExtended(self, message):
4452
try:
4553
msgObj = messagetypes.message.Message()
4654
self.data = zlib.compress(msgpack.dumps(msgObj.encode(message)), 9)
4755
except zlib.error:
4856
logger.error("Error compressing message")
49-
raise
57+
raise MsgEncodeException("Error compressing message")
5058
except msgpack.exceptions.PackException:
5159
logger.error("Error msgpacking message")
52-
raise
60+
raise MsgEncodeException("Error msgpacking message")
5361
self.length = len(self.data)
5462

5563
def encodeSimple(self, message):
@@ -85,7 +93,7 @@ def decodeExtended(self, data):
8593
data = dc.unconsumed_tail
8694
except zlib.error:
8795
logger.error("Error decompressing message")
88-
raise
96+
raise MsgDecodeException("Error decompressing message")
8997
else:
9098
raise DecompressionSizeException(len(tmp))
9199

@@ -94,21 +102,21 @@ def decodeExtended(self, data):
94102
except (msgpack.exceptions.UnpackException,
95103
msgpack.exceptions.ExtraData):
96104
logger.error("Error msgunpacking message")
97-
raise
105+
raise MsgDecodeException("Error msgunpacking message")
98106

99107
try:
100108
msgType = tmp[""]
101109
except KeyError:
102110
logger.error("Message type missing")
103-
raise
111+
raise MsgDecodeException("Message type missing")
104112

105113
msgObj = messagetypes.constructObject(tmp)
106114
if msgObj is None:
107-
raise ValueError("Malformed message")
115+
raise MsgDecodeException("Malformed message")
108116
try:
109117
msgObj.process()
110118
except:
111-
raise ValueError("Malformed message")
119+
raise MsgDecodeException("Malformed message")
112120
if msgType == "message":
113121
self.subject = msgObj.subject
114122
self.body = msgObj.body

0 commit comments

Comments
 (0)