|
14 | 14 | SOCKET_BAD_BUFFER_SIZE: int = -2 |
15 | 15 | SOCKET_SEND_TIMEOUT: int = 5 |
16 | 16 | SOCKET_CONNECT_TIMEOUT: int = 2 |
17 | | -SOCKET_RECEIVE_TIMEOUT: int = 5 |
| 17 | +SOCKET_RECEIVE_TIMEOUT: int = 10 |
18 | 18 |
|
19 | 19 | class UnixPipe: |
20 | 20 | def __init__(self): |
@@ -64,25 +64,23 @@ def disconnect(self): |
64 | 64 | self.socket = None # Reset so connect() creates a fresh socket |
65 | 65 |
|
66 | 66 | def send(self, payload, op): |
67 | | - log.debug(f"Sending payload: {payload} with op: {op}") |
68 | 67 | payload_bytes = json.dumps(payload).encode("UTF-8") |
69 | 68 | header = struct.pack("<ii", op, len(payload_bytes)) |
70 | 69 | message = header + payload_bytes |
71 | 70 | self.socket.settimeout(SOCKET_SEND_TIMEOUT) |
72 | 71 | self.socket.sendall(message) |
73 | 72 |
|
74 | 73 | def receive(self) -> (int, str): |
75 | | - self.socket.settimeout(SOCKET_RECEIVE_TIMEOUT) |
76 | 74 | data = self.socket.recv(SOCKET_BUFFER_SIZE) |
77 | 75 | if len(data) == 0: |
78 | 76 | return SOCKET_DISCONNECTED, {} |
79 | 77 | header = data[:8] |
80 | 78 | code = int.from_bytes(header[:4], "little") |
81 | 79 | length = int.from_bytes(header[4:], "little") |
82 | | - all_data = data[8:] |
83 | | - buffer_size = length - len(all_data) |
84 | | - if buffer_size < 0: |
| 80 | + all_data = b"" |
| 81 | + if length < 0: |
85 | 82 | return SOCKET_BAD_BUFFER_SIZE, {} |
86 | | - data = self.socket.recv(length - len(all_data)) |
87 | | - all_data += data |
| 83 | + if length > 0: |
| 84 | + data = self.socket.recv(length) |
| 85 | + all_data += data |
88 | 86 | return code, all_data.decode("UTF-8") |
0 commit comments