def close_secure_channel(self): """ close secure channel. It seems to trigger a shutdown of socket in most servers, so be prepare to reconnect. OPC UA specs Part 6, 7.1.4 say that Server does not send a CloseSecureChannel response and should just close socket """ self.logger.info("close_secure_channel") request = ua.CloseSecureChannelRequest() future = self._send_request(request, message_type=ua.MessageType.SecureClose) with self._lock: # don't expect any more answers future.cancel() self._callbackmap.clear()
def close_secure_channel(self): """ close secure channel. It seems to trigger a shutdown of socket in most servers, so be prepare to reconnect. OPC UA specs Part 6, 7.1.4 say that Server does not send a CloseSecureChannel response and should just close socket """ self.logger.info("close_secure_channel") request = ua.CloseSecureChannelRequest() try: future = self._send_request(request, message_type=ua.MessageType.SecureClose) with self._lock: # some servers send a response here, most do not ... so we ignore future.cancel() except (socket.error, OSError) as exc: if exc.errno in (errno.ENOTCONN, errno.EBADF): # Socket is closed, so can't send CloseSecureChannelRequest. self.logger.warning("close_secure_channel() failed: socket already closed") else: raise