diff --git a/qubesmgmt/app.py b/qubesmgmt/app.py index 588f8c2..c856dd2 100644 --- a/qubesmgmt/app.py +++ b/qubesmgmt/app.py @@ -109,12 +109,15 @@ class QubesLocal(QubesBase): # src, method, dest, arg for call_arg in ('dom0', method, dest, arg): - client_socket.sendall(call_arg.encode('ascii')) + if call_arg is not None: + client_socket.sendall(call_arg.encode('ascii')) client_socket.sendall(b'\0') if payload is not None: client_socket.sendall(payload) - return_data = b''.join(iter(client_socket.recv(BUF_SIZE), b'')) + client_socket.shutdown(socket.SHUT_WR) + + return_data = b''.join(iter(lambda: client_socket.recv(BUF_SIZE), b'')) return self._parse_qubesd_response(return_data)