diff options
author | Yury Selivanov <yselivanov@sprymix.com> | 2015-08-05 18:06:23 (GMT) |
---|---|---|
committer | Yury Selivanov <yselivanov@sprymix.com> | 2015-08-05 18:06:23 (GMT) |
commit | 8c125eb44b528ba22b43cdf5da49e408082865fa (patch) | |
tree | 5c131e1f9a944b051d625d80d5ce8da7abddebc3 | |
parent | 3fc0f2d288cad93d374d98ca67aa8648e22e9d2f (diff) | |
download | cpython-8c125eb44b528ba22b43cdf5da49e408082865fa.zip cpython-8c125eb44b528ba22b43cdf5da49e408082865fa.tar.gz cpython-8c125eb44b528ba22b43cdf5da49e408082865fa.tar.bz2 |
asyncio: Make sure BaseException is re-raised in SSLProtocol
-rw-r--r-- | Lib/asyncio/sslproto.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/asyncio/sslproto.py b/Lib/asyncio/sslproto.py index e566946..e5ae49a 100644 --- a/Lib/asyncio/sslproto.py +++ b/Lib/asyncio/sslproto.py @@ -613,7 +613,8 @@ class SSLProtocol(protocols.Protocol): if data: ssldata, offset = self._sslpipe.feed_appdata(data, offset) elif offset: - ssldata = self._sslpipe.do_handshake(self._on_handshake_complete) + ssldata = self._sslpipe.do_handshake( + self._on_handshake_complete) offset = 1 else: ssldata = self._sslpipe.shutdown(self._finalize) @@ -637,9 +638,13 @@ class SSLProtocol(protocols.Protocol): self._write_buffer_size -= len(data) except BaseException as exc: if self._in_handshake: + # BaseExceptions will be re-raised in _on_handshake_complete. self._on_handshake_complete(exc) else: self._fatal_error(exc, 'Fatal error on SSL transport') + if not isinstance(exc, Exception): + # BaseException + raise def _fatal_error(self, exc, message='Fatal error on transport'): # Should be called from exception handler only. |