| 1743 | |
| 1744 | |
| 1745 | class TestSocketWrapper: |
| 1746 | |
| 1747 | def __init__(self, sock): |
| 1748 | self.__sock = sock |
| 1749 | |
| 1750 | def recv_all(self, n): |
| 1751 | buf = b'' |
| 1752 | while len(buf) < n: |
| 1753 | data = self.recv(n - len(buf)) |
| 1754 | if data == b'': |
| 1755 | raise ConnectionAbortedError |
| 1756 | buf += data |
| 1757 | return buf |
| 1758 | |
| 1759 | def starttls(self, ssl_context, *, |
| 1760 | server_side=False, |
| 1761 | server_hostname=None, |
| 1762 | do_handshake_on_connect=True): |
| 1763 | |
| 1764 | assert isinstance(ssl_context, ssl.SSLContext) |
| 1765 | |
| 1766 | ssl_sock = ssl_context.wrap_socket( |
| 1767 | self.__sock, server_side=server_side, |
| 1768 | server_hostname=server_hostname, |
| 1769 | do_handshake_on_connect=do_handshake_on_connect) |
| 1770 | |
| 1771 | if server_side: |
| 1772 | ssl_sock.do_handshake() |
| 1773 | |
| 1774 | self.__sock.close() |
| 1775 | self.__sock = ssl_sock |
| 1776 | |
| 1777 | def __getattr__(self, name): |
| 1778 | return getattr(self.__sock, name) |
| 1779 | |
| 1780 | def __repr__(self): |
| 1781 | return '<{} {!r}>'.format(type(self).__name__, self.__sock) |
| 1782 | |
| 1783 | |
| 1784 | class SocketThread(threading.Thread): |
no outgoing calls
searching dependent graphs…