@cryptotaxi247 / netdata-1 / commits / fd83cbe87

timeout is essential when connecting to socket

paulfantom committed Jul 13, 2016 at 19:07 UTC fd83cbe8701e728bcbc7bd7d5c271d80ac167f5f
2 files changed +10 -10
plugins.d/python.d.plugin
-1
@@ -319,7 +319,6 @@ class PythonCharts(object):
319 i = 0
320 overridden = []
321 while i < len(self.jobs):
322 - msg.error(*overridden)
322 job = self.jobs[i]
323 try:
324 if not job.check():
python.d/python_modules/base.py
+10 -9
@@ -486,11 +486,11 @@ class SocketService(SimpleService):
486 if self.unix_socket is None:
487 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
488 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
489 - #sock.settimeout(self.update_every)
489 + sock.settimeout(self.update_every)
490 sock.connect((self.host, self.port))
491 else:
492 sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
493 - #sock.settimeout(self.update_every)
493 + sock.settimeout(self.update_every)
494 sock.connect(self.unix_socket)
495
496 except Exception as e:
@@ -510,23 +510,24 @@ class SocketService(SimpleService):
510 self.sock = None
511 return None
512
513 - data = sock.recv(2)
513 + #data = sock.recv(2)
514 + data = ""
515 try:
516 while True:
516 - try:
517 - buf = sock.recv(1024, 0x40) # get 1024 bytes in NON-BLOCKING mode
518 - except socket.error:
519 - break
517 + #try:
518 + buf = sock.recv(1024, 0x40) # get 1024 bytes in NON-BLOCKING mode
519 + #except socket.error:
520 + # break
521
522 if len(buf) == 0:
523 break
524 else:
524 - data += buf
525 + data += buf.decode()
526 except:
527 sock.close()
528 return None
529
529 - return data.decode()
530 + return data
531
532 def _parse_config(self):
533 """