From fdf5f03a13d48ec64401a2c95743650ca4ce6d30 Mon Sep 17 00:00:00 2001
From: King's Way <io@stdio.io>
Date: Sat, 3 Jul 2021 15:26:39 +0800
Subject: [PATCH] take 'Connection Refused' as a successful ping probe

---
 clients/client-linux.py  | 14 ++++++++++----
 clients/client-psutil.py | 11 ++++++++---
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/clients/client-linux.py b/clients/client-linux.py
index c3ef97f..c946300 100755
--- a/clients/client-linux.py
+++ b/clients/client-linux.py
@@ -28,6 +28,7 @@ import re
 import os
 import sys
 import json
+import errno
 import subprocess
 import threading
 try:
@@ -181,11 +182,16 @@ def _ping_thread(host, mark, port):
         try:
             b = timeit.default_timer()
             socket.create_connection((IP, port), timeout=1).close()
-            pingTime[mark] = int((timeit.default_timer()-b)*1000)
+            pingTime[mark] = int((timeit.default_timer() - b) * 1000)
             packet_queue.put(1)
-        except:
-            lostPacket += 1
-            packet_queue.put(0)
+        except socket.error as error:
+            if error.errno == errno.ECONNREFUSED:
+                pingTime[mark] = int((timeit.default_timer() - b) * 1000)
+                packet_queue.put(1)
+            #elif error.errno == errno.ETIMEDOUT:
+            else:
+                lostPacket += 1
+                packet_queue.put(0)
 
         if packet_queue.qsize() > 30:
             lostRate[mark] = float(lostPacket) / packet_queue.qsize()
diff --git a/clients/client-psutil.py b/clients/client-psutil.py
index 307f3dd..80a9810 100755
--- a/clients/client-psutil.py
+++ b/clients/client-psutil.py
@@ -168,9 +168,14 @@ def _ping_thread(host, mark, port):
             socket.create_connection((IP, port), timeout=1).close()
             pingTime[mark] = int((timeit.default_timer() - b) * 1000)
             packet_queue.put(1)
-        except:
-            lostPacket += 1
-            packet_queue.put(0)
+        except socket.error as error:
+            if error.errno == errno.ECONNREFUSED:
+                pingTime[mark] = int((timeit.default_timer() - b) * 1000)
+                packet_queue.put(1)
+            #elif error.errno == errno.ETIMEDOUT:
+            else:
+                lostPacket += 1
+                packet_queue.put(0)
 
         if packet_queue.qsize() > 30:
             lostRate[mark] = float(lostPacket) / packet_queue.qsize()