Skip to content

Commit 7b2af4e

Browse files
brubbeloroulet
authored andcommitted
fix OSError: [Errno 107] Transport endpoint is not connected
cfr. #739 cfr. https://linux.die.net/man/2/shutdown
1 parent a4bba7a commit 7b2af4e

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

opcua/client/ua_client.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,15 +137,21 @@ def connect_socket(self, host, port):
137137
"""
138138
self.logger.info("opening connection")
139139
sock = socket.create_connection((host, port))
140-
# nodelay ncessary to avoid packing in one frame, some servers do not like it
140+
# nodelay necessary to avoid packing in one frame, some servers do not like it
141141
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
142142
self._socket = ua.utils.SocketWrapper(sock)
143143
self.start()
144144

145145
def disconnect_socket(self):
146146
self.logger.info("Request to close socket received")
147147
self._do_stop = True
148-
self._socket.socket.shutdown(socket.SHUT_RDWR)
148+
try:
149+
self._socket.socket.shutdown(socket.SHUT_RDWR)
150+
except OSError as exc:
151+
if exc.errno == errno.ENOTCONN:
152+
pass # Socket is not connected, so can't send FIN packet.
153+
else:
154+
raise
149155
self._socket.socket.close()
150156
self.logger.info("Socket closed, waiting for receiver thread to terminate...")
151157
if self._thread and self._thread.is_alive():

0 commit comments

Comments
 (0)