From: Jeff Lucovsky Date: Tue, 11 Jan 2022 19:16:24 +0000 (-0500) Subject: suricatasc: Handle incomplete/empty recv values X-Git-Tag: suricata-6.0.5~128 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fae78d438b64d963ec22e4f3388c0f3f1ba68e16;p=thirdparty%2Fsuricata.git suricatasc: Handle incomplete/empty recv values Issue: 4947 Improve handling of values returned by recv. Sometimes, recv returns an empty string if suricata terminates asynchronously. (cherry picked from commit fc6fdef07006e5382839ef88873e90754b30e6e0) --- diff --git a/python/suricata/sc/suricatasc.py b/python/suricata/sc/suricatasc.py index e3235ce4aa..fa0638961d 100644 --- a/python/suricata/sc/suricatasc.py +++ b/python/suricata/sc/suricatasc.py @@ -118,9 +118,14 @@ class SuricataSC: data = "" while True: if sys.version < '3': - data += self.socket.recv(INC_SIZE) + received = self.socket.recv(INC_SIZE) else: - data += self.socket.recv(INC_SIZE).decode('iso-8859-1') + received = self.socket.recv(INC_SIZE).decode('iso-8859-1') + + if not received: + break + + data += received if data.endswith('\n'): cmdret = json.loads(data) break