Commit 4b552457 by James Cammarata

Bail out correctly if socket.recv gets nothing (indicating a closed socket)

parent 86f01965
...@@ -85,11 +85,17 @@ class Connection(object): ...@@ -85,11 +85,17 @@ class Connection(object):
header_len = 8 # size of a packed unsigned long long header_len = 8 # size of a packed unsigned long long
data = b"" data = b""
while len(data) < header_len: while len(data) < header_len:
data += self.conn.recv(1024) d = self.conn.recv(1024)
if not d:
return None
data += d
data_len = struct.unpack('Q',data[:header_len])[0] data_len = struct.unpack('Q',data[:header_len])[0]
data = data[header_len:] data = data[header_len:]
while len(data) < data_len: while len(data) < data_len:
data += self.conn.recv(1024) d = self.conn.recv(1024)
if not d:
return None
data += d
return data return data
def exec_command(self, cmd, tmp_path, sudo_user, sudoable=False, executable='/bin/sh'): def exec_command(self, cmd, tmp_path, sudo_user, sudoable=False, executable='/bin/sh'):
......
...@@ -163,7 +163,10 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler): ...@@ -163,7 +163,10 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
data_len = struct.unpack('Q',data[:header_len])[0] data_len = struct.unpack('Q',data[:header_len])[0]
data = data[header_len:] data = data[header_len:]
while len(data) < data_len: while len(data) < data_len:
data += self.request.recv(1024) d = self.request.recv(1024)
if not d:
return None
data += d
return data return data
def handle(self): def handle(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment