summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-08-08 19:40:58 +0200
committerToni Uhlig <matzeton@googlemail.com>2020-08-08 19:41:44 +0200
commit67407a8a394e3deb4c493f72ecd5b1be23a16bcf (patch)
tree45df61125fcd64f4e8154ebd65de3b5e1f56df7b /examples
parent530ec3ccf70f4cda0706d3e9b0ce551f5326bd87 (diff)
flow-info.py: fixed buffering issue
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/py-flow-info/flow-info.py17
1 files changed, 8 insertions, 9 deletions
diff --git a/examples/py-flow-info/flow-info.py b/examples/py-flow-info/flow-info.py
index 3dd41c87d..07fbba651 100755
--- a/examples/py-flow-info/flow-info.py
+++ b/examples/py-flow-info/flow-info.py
@@ -7,6 +7,7 @@ import socket
HOST = '127.0.0.1'
PORT = 7000
+NETWORK_BUFFER_MIN_SIZE = 5
NETWORK_BUFFER_MAX_SIZE = 8192
class nDPIsrvdSocket:
@@ -15,16 +16,12 @@ class nDPIsrvdSocket:
def connect(self, host, port):
self.sock.connect((host, port))
- self.buffer = str()
+ self.buffer = bytes()
self.msglen = 0
self.digitlen = 0
def receive(self):
- try:
- recvd_buf = self.sock.recv(NETWORK_BUFFER_MAX_SIZE - len(self.buffer))
- recvd = recvd_buf.decode(errors='strict')
- except UnicodeDecodeError as exc:
- raise RuntimeError('Unicode Exception: {}\n\nReceived String: {}'.format(str(exc), str(recvd_buf)))
+ recvd = self.sock.recv(NETWORK_BUFFER_MAX_SIZE - len(self.buffer))
if recvd == '':
raise RuntimeError('socket connection broken')
@@ -34,9 +31,11 @@ class nDPIsrvdSocket:
while self.msglen + self.digitlen < len(self.buffer):
if self.msglen == 0:
- starts_with_digits = re.match(r'(^\d+){', self.buffer)
+ starts_with_digits = re.match(r'(^\d+){', self.buffer[:NETWORK_BUFFER_MIN_SIZE].decode(errors='strict'))
if starts_with_digits is None:
- break
+ if len(self.buffer) < NETWORK_BUFFER_MIN_SIZE:
+ break
+ raise RuntimeError('Invalid packet received: {}'.format(self.buffer))
self.msglen = int(starts_with_digits[1])
self.digitlen = len(starts_with_digits[1])
@@ -73,7 +72,7 @@ def parse_json_str(json_str):
elif event == 'idle':
event_str = 'Idle flow'
elif event == 'detected':
- event_str = 'Detected flow'
+ event_str = 'Detected'
elif event == 'guessed':
event_str = 'Guessed'
elif event == 'not-detected':