Issue: 4947
Improve handling of values returned by recv. Sometimes, recv returns an
empty string if suricata terminates asynchronously.
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