@cryptotaxi247 / netdata-1 / commits / feeeceda5

fix SocketService

paulfantom committed Jul 13, 2016 at 16:28 UTC feeeceda51681f58be2bb4e2962f5534f92d91a7
2 files changed +16 -38
python.d/python_modules/base.py
+10 -9
@@ -150,10 +150,10 @@ class BaseService(threading.Thread):
150 else:
151 time.sleep(self.timetable['freq'])
152
153 - def _format(self, *input):
153 + def _format(self, *args):
154 params = []
155 append = params.append
156 - for p in input:
156 + for p in args:
157 if p is None:
158 append(p)
159 continue
@@ -515,14 +515,15 @@ class SocketService(SimpleService):
515 data = sock.recv(2)
516 try:
517 while True:
518 - buf = sock.recv(1024)
519 -# if not buf:
520 -# break
521 -# else:
522 -# data += buf
523 - data += buf
524 - if len(buf) < 1024:
518 + try:
519 + buf = sock.recv(1024, 0x40) # get 1024 bytes in NON-BLOCKING mode
520 + except socket.error:
521 + break
522 +
523 + if len(buf) == 0:
524 break
525 + else:
526 + data += buf
527 except:
528 sock.close()
529 return None
python.d/squid.chart.py
+6 -29
@@ -65,7 +65,7 @@ class Service(SocketService):
65 if row.startswith(("client", "server.all")):
66 tmp = row.split("=")
67 data[tmp[0].replace('.', '_').strip(' ')] = int(tmp[1])
68 - except (ValueError, AttributeError):
68 + except (ValueError, AttributeError, TypeError):
69 return None
70
71 if len(data) == 0:
@@ -86,31 +86,8 @@ class Service(SocketService):
86 if not req.endswith(" HTTP/1.0\r\n\r\n"):
87 req += " HTTP/1.0\r\n\r\n"
88 self.request = req.encode()
89 - #
90 - # # autodetect squid
91 - # if type(self.port) is tuple:
92 - # ports = self.port
93 - # for port in ports:
94 - # self.port = port
95 - # urls = ["cache_object://" + self.host + ":" + str(port) + "/counters",
96 - # "/squid-internal-mgr/counters"]
97 - # for url in urls:
98 - # tmp = "GET " + url + " HTTP/1.0\r\n\r\n"
99 - # self.request = tmp.encode()
100 - # if self._get_data() is not None:
101 - # return True
102 - # else:
103 - if True:
104 - if self._get_data() is not None:
105 - return True
106 - else:
107 - self.error("No data returned")
108 - return False
109 -
110 -
111 -
112 -
113 -
114 -
115 -
116 -
89 + if self._get_data() is not None:
90 + return True
91 + else:
92 + self.error("No data returned")
93 + return False