From 99d28e92ea4d64da600e10ed08949b2c400edfce Mon Sep 17 00:00:00 2001 From: Stefan Ruijsenaars Date: Wed, 6 Oct 2021 14:48:32 +0100 Subject: [PATCH] handle errors on pdu retrieval --- smpplib/client.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/smpplib/client.py b/smpplib/client.py index b89af50..bb44b04 100644 --- a/smpplib/client.py +++ b/smpplib/client.py @@ -249,7 +249,16 @@ def read_pdu(self): raw_pdu = raw_len while len(raw_pdu) < length: - raw_pdu += self._socket.recv(length - len(raw_pdu)) + try: + raw_pdu_part = self._socket.recv(length - len(raw_pdu)) + except socket.timeout: + raise + except socket.error as e: + self.logger.warning(e) + raise exceptions.ConnectionError() + if not raw_pdu: + raise exceptions.ConnectionError() + raw_pdu += raw_pdu_part self.logger.debug('<<%s (%d bytes)', binascii.b2a_hex(raw_pdu), len(raw_pdu))