From 3aaae389a68c866b12a7159dd0ca388f97464f84 Mon Sep 17 00:00:00 2001 From: Alexander Koshevoy Date: Mon, 2 Jul 2018 14:37:12 +0300 Subject: [PATCH] PY-18029 Handle TBidirectionalClientTransport.close() more strictly Set `_is_closed` flag on `TBidirectionalClientTransport.close()` method execution. --- python/helpers/pydev/pydev_console/thrift_transport.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/python/helpers/pydev/pydev_console/thrift_transport.py b/python/helpers/pydev/pydev_console/thrift_transport.py index 723effa35afd..dfd8a7d47d53 100644 --- a/python/helpers/pydev/pydev_console/thrift_transport.py +++ b/python/helpers/pydev/pydev_console/thrift_transport.py @@ -135,6 +135,8 @@ class TBidirectionalClientTransport(TTransportBase, FramedWriter): self._reader = reader self._writer = writer + self._is_closed = False + def _get_writer(self): return self._writer @@ -148,11 +150,11 @@ class TBidirectionalClientTransport(TTransportBase, FramedWriter): return self._reader.read_response(sz) def is_open(self): - # todo we may try to monitor reads and writes and put a flag if they fail - return self._client_socket + return not self._is_closed def close(self): - # todo should we do something with buffer of the multiplexed reader + self._is_closed = True + self._client_socket.shutdown(socket.SHUT_RDWR) self._client_socket.close()