mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #23197, asyncio: On SSL handshake failure, check if the waiter is
cancelled before setting its exception. * Add unit tests for this case. * Cleanup also sslproto.py
This commit is contained in:
parent
f651a60407
commit
177e9f0855
4 changed files with 65 additions and 7 deletions
|
@ -530,10 +530,11 @@ class SSLProtocol(protocols.Protocol):
|
|||
self._in_handshake = False
|
||||
|
||||
sslobj = self._sslpipe.ssl_object
|
||||
peercert = None if handshake_exc else sslobj.getpeercert()
|
||||
try:
|
||||
if handshake_exc is not None:
|
||||
raise handshake_exc
|
||||
|
||||
peercert = sslobj.getpeercert()
|
||||
if not hasattr(self._sslcontext, 'check_hostname'):
|
||||
# Verify hostname if requested, Python 3.4+ uses check_hostname
|
||||
# and checks the hostname in do_handshake()
|
||||
|
@ -551,7 +552,7 @@ class SSLProtocol(protocols.Protocol):
|
|||
self, exc_info=True)
|
||||
self._transport.close()
|
||||
if isinstance(exc, Exception):
|
||||
if self._waiter is not None:
|
||||
if self._waiter is not None and not self._waiter.cancelled():
|
||||
self._waiter.set_exception(exc)
|
||||
return
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue