diff options
| author | Yury Selivanov <yselivanov@sprymix.com> | 2015-08-05 14:06:23 -0400 | 
|---|---|---|
| committer | Yury Selivanov <yselivanov@sprymix.com> | 2015-08-05 14:06:23 -0400 | 
| commit | 8c125eb44b528ba22b43cdf5da49e408082865fa (patch) | |
| tree | 5c131e1f9a944b051d625d80d5ce8da7abddebc3 /Lib/asyncio/sslproto.py | |
| parent | 3fc0f2d288cad93d374d98ca67aa8648e22e9d2f (diff) | |
| download | cpython-git-8c125eb44b528ba22b43cdf5da49e408082865fa.tar.gz | |
asyncio: Make sure BaseException is re-raised in SSLProtocol
Diffstat (limited to 'Lib/asyncio/sslproto.py')
| -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 e566946e22..e5ae49a5df 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. | 
