(self)
| 350 | self._ssl_accepting = True |
| 351 | |
| 352 | def _do_ssl_handshake(self): |
| 353 | try: |
| 354 | self.socket.do_handshake() |
| 355 | except ssl.SSLError as err: |
| 356 | if err.args[0] in (ssl.SSL_ERROR_WANT_READ, |
| 357 | ssl.SSL_ERROR_WANT_WRITE): |
| 358 | return |
| 359 | elif err.args[0] == ssl.SSL_ERROR_EOF: |
| 360 | return self.handle_close() |
| 361 | # TODO: SSLError does not expose alert information |
| 362 | elif "SSLV3_ALERT_BAD_CERTIFICATE" in err.args[1]: |
| 363 | return self.handle_close() |
| 364 | raise |
| 365 | except OSError as err: |
| 366 | if err.args[0] == errno.ECONNABORTED: |
| 367 | return self.handle_close() |
| 368 | else: |
| 369 | self._ssl_accepting = False |
| 370 | |
| 371 | def _do_ssl_shutdown(self): |
| 372 | self._ssl_closing = True |
no test coverage detected