• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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