Commits

William Pitcock committed e1de883

rpc_client: fix response reading

  • Participants
  • Parent commits 2c4cef0

Comments (0)

Files changed (1)

ediarpc/rpc_client.py

         self._secret = secret
         self._allow_untrusted = allow_untrusted
 
+    def _read_loop(self, sock):
+        data = []
+        sock.settimeout(None)
+        data.append(sock.recv(1024))
+        sock.settimeout(0.1)
+
+        while True:
+            try:
+                data.append(sock.recv(1024))
+            except:
+                break
+
+        sock.settimeout(None)
+        return ''.join(data)
+
     def _call(self, name, **kwargs):
         sock = socket.create_connection((self._host, self._port))
+
         envelope = rpc_message.encode(self._secret, name, **kwargs) + '\r\n'
-        sock.sendall(envelope)
-        response = sock.recv(131072)
+        sock.sendall(envelope) 
+        response = self._read_loop(sock)
         sock.close()
 
         return rpc_message.decode(self._secret, response, self._allow_untrusted)[1]