@cryptotaxi247 / netdata-1 / commits / 54c79c477

fix `SocketService`

paulfantom committed Jul 15, 2016 at 20:35 UTC 54c79c47770b513baab4174195f423f9be268af5
1 file changed +10 -24
python.d/python_modules/base.py
+10 -24
@@ -485,7 +485,8 @@ class SocketService(SimpleService):
485 Get raw data with low-level "socket" module.
486 :return: str
487 """
488 - if self._sock is None:
488 + #if self._sock is None:
489 + if True:
490 try:
491 if self.unix_socket is None:
492 self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@@ -513,37 +514,22 @@ class SocketService(SimpleService):
514 self._sock.send(self.request)
515 except Exception as e:
516 try:
516 - self._sock.shutdown(1)
517 + self._sock.shutdown(0)
518 self._sock.close()
519 except:
520 pass
521 self._sock = None
522 self.error(str(e), "used configuration: host:", str(self.host), "port:", str(self.port), "socket:", str(self.unix_socket))
523 return None
523 - # data = ""
524 - # import select
525 - # while True:
526 - # try:
527 - # ready_to_read, _, in_error = select.select([sock, ], [], [], 0.01)
528 - # except Exception as e:
529 - # self.debug("SELECT", str(e))
530 - # sock.shutdown(0)
531 - # break
532 - # if len(ready_to_read) > 0:
533 - # buf = sock.recv(1024)
534 - # if len(buf) == 0 or buf is None:
535 - # break
536 - # data += buf.decode()
537 - # if data == "":
538 - # return None
539 - # return data
524
525 size = 2
526 try:
527 data = self._sock.recv(size).decode()
528 except Exception as e:
529 self.error(str(e), "used configuration: host:", str(self.host), "port:", str(self.port), "socket:", str(self.unix_socket))
530 + self._sock.shutdown(0)
531 self._sock.close()
532 + self._sock = None
533 return None
534
535 while True:
@@ -552,11 +538,11 @@ class SocketService(SimpleService):
538 size *= 2
539 buf = self._sock.recv(size)
540 data += buf.decode()
555 - if len(buf) < size:
556 - if self._more_data_available():
557 - size = 2
558 - else:
559 - break
541 + if len(buf) == 0: break
542 + if len(buf) < size and not self._more_data_available():
543 + break
544 + else:
545 + size = 4
546
547 return data
548