From bee37df76d3896dbf18f8cc564aedf2ccaf8c382 Mon Sep 17 00:00:00 2001 From: Joerg Schultze-Lutter Date: Thu, 9 Sep 2021 22:41:09 +0200 Subject: [PATCH] Fixed final msg parser bug when no msgno was present --- aprslib/parsing/message.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/aprslib/parsing/message.py b/aprslib/parsing/message.py index e06ef88..4e016f8 100644 --- a/aprslib/parsing/message.py +++ b/aprslib/parsing/message.py @@ -125,10 +125,17 @@ def parse_message(body): parsed.pop("message_text") has_matched = True + # escape from the eternal 'while' + if has_matched: + break + # # regular message body parser # if not has_matched: + # one-time truncate to 67 chars + body = body[0:67].strip() + # new message format: http://www.aprs.org/aprs11/replyacks.txt # search for: msgText/msgNo/ackMsgNo all present match = re.search(r"{([A-Za-z0-9]{2})}([A-Za-z0-9]{2})$", body) @@ -139,7 +146,6 @@ def parse_message(body): parsed.update({'msgNo': msgNo}) parsed.update({'ackMsgNo': ackMsgNo}) has_matched = True - parsed.update({'message_text': body[0:67].strip()}) # new message format: http://www.aprs.org/aprs11/replyacks.txt # search for: msgText/msgNo present and ackMsgNo not present @@ -150,8 +156,6 @@ def parse_message(body): body = body[:len(body) - 2 - len(msgNo)] parsed.update({'msgNo': msgNo}) has_matched = True - body = body[0:67].strip() - parsed.update({'message_text': body[0:67].strip()}) # old message format - see aprs101.pdf. # search for: msgNo present @@ -162,7 +166,9 @@ def parse_message(body): body = body[:len(body) - 1 - len(msgNo)] parsed.update({'msgNo': msgNo}) has_matched = True - parsed.update({'message_text': body[0:67].strip()}) + + # update the potentially changed message body in our dictionary + parsed.update({'message_text': body[0:67].strip()}) # break free from the eternal 'while' break