diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py index c8acf67b23b99..4800a0e661f9d 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py @@ -205,11 +205,13 @@ def __init__( send: BinaryIO, init_commands: Optional[List[str]] = None, spawn_helper: Optional[SpawnHelperCallback] = None, + socket: Optional[socket.socket] = None, ): self._log = Log() self.send = send self.recv = recv self.spawn_helper = spawn_helper + self.socket = socket # Packets that have been received and processed but have not yet been # requested by a test case. @@ -1643,6 +1645,12 @@ def request_custom(self, command: str, arguments: Optional[dict[str, Any]] = Non return self._send_recv(command_dict) def terminate(self): + if self.socket: + try: + self.socket.shutdown(socket.SHUT_RDWR) + except OSError: + # Ignore "already disconnected" errors. + pass self.send.close() if self._recv_thread.is_alive(): self._recv_thread.join() @@ -1706,6 +1714,7 @@ def __init__( s.makefile("wb"), init_commands, spawn_helper, + socket=s, ) self.connection = connection else: