]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
suricatasc: improve reading when system is loaded
authorEric Leblond <eric@regit.org>
Fri, 26 Oct 2012 14:21:21 +0000 (16:21 +0200)
committerEric Leblond <eric@regit.org>
Mon, 19 Nov 2012 22:54:26 +0000 (23:54 +0100)
scripts/suricatasc/suricatasc.in

index eceb4617a16f31e03aeb1b106c00418fda9a375d..4b36dd434510fe3a5f1dd9b518aaa19f7f1cf5c3 100755 (executable)
@@ -31,15 +31,23 @@ COMMANDS_REGEX = re.compile("^(?:shutdown|quit|reload-rules|pcap-file .+|pcap-fi
 
 socket = socket(AF_UNIX)
 socket.connect(SOCKET_PATH)
+socket.settimeout(10)
 
 #send version
 socket.send(json.dumps({"version": VERSION}))
 
-sleep(0.2)
 # get return
-data = socket.recv(SIZE)
-#decode json message
-cmdret = json.loads(data)
+cmdret = None
+i = 0
+data = ""
+while i < 5:
+    i += 1
+    data += socket.recv(SIZE)
+    try:
+        cmdret = json.loads(data)
+        break
+    except json.decoder.JSONDecodeError:
+        sleep(0.3)
 
 # if ok loop
 if cmdret["return"] == "NOK":
@@ -72,10 +80,17 @@ try:
             else:
                 cmdmsg["command"] = command
             socket.send(json.dumps(cmdmsg))
-            sleep(0.3)
-            data = socket.recv(SIZE)
+            i = 0
+            data = ""
+            while i < 3:
+                i += 1
+                data += socket.recv(SIZE)
+                try:
+                    cmdret = json.loads(data)
+                    break
+                except json.decoder.JSONDecodeError:
+                    sleep(0.3)
             #decode json message
-            cmdret = json.loads(data)
             if cmdret["return"] == "NOK":
                 print "Error: %s" % (cmdret["message"])
             else:
@@ -87,4 +102,6 @@ except KeyboardInterrupt:
 
 print "[+] Quit command client"
 
+socket.close()
+
 sys.exit(1)