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.
pull/6779/head
Jeff Lucovsky 3 years ago committed by Victor Julien
parent ddf14e51dc
commit fc6fdef070

@ -118,9 +118,14 @@ class SuricataSC:
data = "" data = ""
while True: while True:
if sys.version < '3': if sys.version < '3':
data += self.socket.recv(INC_SIZE) received = self.socket.recv(INC_SIZE)
else: 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'): if data.endswith('\n'):
cmdret = json.loads(data) cmdret = json.loads(data)
break break

Loading…
Cancel
Save