diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-09-21 16:06:17 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-09-21 16:06:17 (GMT) |
commit | f7dc7fb74d7c44a60f36a69437125f5ff70e32e5 (patch) | |
tree | 5a8654a25114426d5890ce27e5de3a95088b8ea2 /Lib/asyncio | |
parent | 808d6416e37bac2d8aa3ebe869f459d39e46cf0c (diff) | |
download | cpython-f7dc7fb74d7c44a60f36a69437125f5ff70e32e5.zip cpython-f7dc7fb74d7c44a60f36a69437125f5ff70e32e5.tar.gz cpython-f7dc7fb74d7c44a60f36a69437125f5ff70e32e5.tar.bz2 |
Issue #25114, asyncio: add ssl_object extra info to SSL transports
This info is required on Python 3.5 and newer to get specific information on
the SSL object, like getting the binary peer certificate (instead of getting
it as text).
Diffstat (limited to 'Lib/asyncio')
-rw-r--r-- | Lib/asyncio/selector_events.py | 1 | ||||
-rw-r--r-- | Lib/asyncio/sslproto.py | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index 4a99658..0060912 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -843,6 +843,7 @@ class _SelectorSslTransport(_SelectorTransport): self._extra.update(peercert=peercert, cipher=self._sock.cipher(), compression=self._sock.compression(), + ssl_object=self._sock, ) self._read_wants_write = False diff --git a/Lib/asyncio/sslproto.py b/Lib/asyncio/sslproto.py index e5ae49a..0a8c090 100644 --- a/Lib/asyncio/sslproto.py +++ b/Lib/asyncio/sslproto.py @@ -295,6 +295,7 @@ class _SSLProtocolTransport(transports._FlowControlMixin, def __init__(self, loop, ssl_protocol, app_protocol): self._loop = loop + # SSLProtocol instance self._ssl_protocol = ssl_protocol self._app_protocol = app_protocol self._closed = False @@ -425,10 +426,12 @@ class SSLProtocol(protocols.Protocol): self._app_protocol = app_protocol self._app_transport = _SSLProtocolTransport(self._loop, self, self._app_protocol) + # _SSLPipe instance (None until the connection is made) self._sslpipe = None self._session_established = False self._in_handshake = False self._in_shutdown = False + # transport, ex: SelectorSocketTransport self._transport = None def _wakeup_waiter(self, exc=None): @@ -591,6 +594,7 @@ class SSLProtocol(protocols.Protocol): self._extra.update(peercert=peercert, cipher=sslobj.cipher(), compression=sslobj.compression(), + ssl_object=sslobj, ) self._app_protocol.connection_made(self._app_transport) self._wakeup_waiter() |