1import warnings 2from threading import RLock as _RLock 3 4from OpenSSL import SSL as _ssl 5 6 7warnings.warn( 8 "OpenSSL.tsafe is deprecated and will be removed", 9 DeprecationWarning, stacklevel=3 10) 11 12 13class Connection: 14 def __init__(self, *args): 15 self._ssl_conn = _ssl.Connection(*args) 16 self._lock = _RLock() 17 18 for f in ('get_context', 'pending', 'send', 'write', 'recv', 'read', 19 'renegotiate', 'bind', 'listen', 'connect', 'accept', 20 'setblocking', 'fileno', 'shutdown', 'close', 'get_cipher_list', 21 'getpeername', 'getsockname', 'getsockopt', 'setsockopt', 22 'makefile', 'get_app_data', 'set_app_data', 'state_string', 23 'sock_shutdown', 'get_peer_certificate', 'get_peer_cert_chain', 24 'want_read', 'want_write', 'set_connect_state', 25 'set_accept_state', 'connect_ex', 'sendall'): 26 exec("""def %s(self, *args): 27 self._lock.acquire() 28 try: 29 return self._ssl_conn.%s(*args) 30 finally: 31 self._lock.release()\n""" % (f, f)) 32