summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/sslproto.py
Commit message (Collapse)AuthorAgeFilesLines
* asyncio: __del__() keep reference to warnings.warn (GH-11491)Victor Stinner2019-01-101-3/+2
| | | | | | | | | | | | | | | * asyncio: __del__() keep reference to warnings.warn The __del__() methods of asyncio classes now keep a strong reference to the warnings.warn() to be able to display the ResourceWarning warning in more cases. Ensure that the function remains available if instances are destroyed late during Python shutdown (while module symbols are cleared). * Rename warn parameter to _warn "_warn" name is a hint that it's not the regular warnings.warn() function.
* bpo-33694: Fix typo in helper function name (GH-7522)Victor Stinner2018-06-081-1/+1
| | | | | | _feed_data_to_bufferred_proto() renamed to _feed_data_to_buffered_proto() ("bufferred" => "buffered"). Typo spotted by Nathaniel J. Smith.
* bpo-33694: Fix race condition in asyncio proactor (GH-7498)Victor Stinner2018-06-071-20/+1
| | | | | | | | | | | | | | | | The cancellation of an overlapped WSARecv() has a race condition which causes data loss because of the current implementation of proactor in asyncio. No longer cancel overlapped WSARecv() in _ProactorReadPipeTransport to work around the race condition. Remove the optimized recv_into() implementation to get simple implementation of pause_reading() using the single _pending_data attribute. Move _feed_data_to_bufferred_proto() to protocols.py. Remove set_protocol() method which became useless.
* bpo-33769: start_tls: Fix error message; cancel callbacks on error (GH-7403)Yury Selivanov2018-06-051-0/+1
| | | In addition to that, mark SSLTransport as "closed" in its "abort()" method to prevent bogus warnings.
* bpo-33734: asyncio/ssl: a bunch of bugfixes (#7321)Yury Selivanov2018-06-041-32/+29
| | | | | | | * Fix AttributeError (not all SSL exceptions have 'errno' attribute) * Increase default handshake timeout from 10 to 60 seconds * Make sure start_tls can be cancelled correctly * Make sure any error in SSLProtocol gets propagated (instead of just being logged)
* bpo-33654: Support protocol type switching in SSLTransport.set_protocol() ↵Yury Selivanov2018-05-291-4/+7
| | | | (#7194)
* bpo-33674: asyncio: Fix SSLProtocol race (GH-7175)Victor Stinner2018-05-281-1/+1
| | | | | | Fix a race condition in SSLProtocol.connection_made() of asyncio.sslproto: start immediately the handshake instead of using call_soon(). Previously, data_received() could be called before the handshake started, causing the handshake to hang or fail.
* bpo-33654: Support BufferedProtocol in set_protocol() and start_tls() (GH-7130)Yury Selivanov2018-05-281-1/+31
| | | | | | | | | | | In this commit: * Support BufferedProtocol in set_protocol() and start_tls() * Fix proactor to cancel readers reliably * Update tests to be compatible with OpenSSL 1.1.1 * Clarify BufferedProtocol docs * Bump TLS tests timeouts to 60 seconds; eliminate possible race from start_serving * Rewrite test_start_tls_server_1
* bpo-33037: Skip sending/receiving after SSL transport closing (GH-6044)Andrew Svetlov2018-03-101-1/+5
| | | | * Skip write()/data_received() if sslpipe is destroyed
* bpo-32622: Implement loop.sendfile() (#5271)Andrew Svetlov2018-01-271-0/+7
|
* bpo-31399: Let OpenSSL verify hostname and IP address (#3462)Christian Heimes2018-01-271-6/+0
| | | | | | | | | | | | | | | bpo-31399: Let OpenSSL verify hostname and IP The ssl module now uses OpenSSL's X509_VERIFY_PARAM_set1_host() and X509_VERIFY_PARAM_set1_ip() API to verify hostname and IP addresses. * Remove match_hostname calls * Check for libssl with set1_host, libssl must provide X509_VERIFY_PARAM_set1_host() * Add documentation for OpenSSL 1.0.2 requirement * Don't support OpenSSL special mode with a leading dot, e.g. ".example.org" matches "www.example.org". It's not standard conform. * Add hostname_checks_common_name Signed-off-by: Christian Heimes <christian@python.org>
* bpo-29970: Make ssh_handshake_timeout None by default (#4939)Andrew Svetlov2017-12-201-1/+8
| | | | | * Make ssh_handshake_timeout None by default. * Raise ValueError if ssl_handshake_timeout is used without ssl. * Raise ValueError if ssl_handshake_timeout is not positive.
* bpo-29970: Add timeout for SSL handshake in asyncioNeil Aspinall2017-12-191-1/+13
| | | | 10 seconds by default.
* bpo-32356: idempotent pause_/resume_reading; new is_reading method. (#4914)Yury Selivanov2017-12-181-0/+6
|
* bpo-32262: Fix codestyle; use f-strings formatting where necessary. (#4775)Yury Selivanov2017-12-101-6/+7
|
* bpo-32069: Drop legacy SSL transport (#4451)Andrew Svetlov2017-11-181-16/+4
| | | | | | | | | | * Drop legacy SSL transport * Drop unused import * Fix Windows tests * Drop never executed on Python 3.4+ code
* bpo-31632: fix set_protocol() in _SSLProtocolTransport (#3817) (#3817)jlacoline2017-10-191-6/+4
|
* Revert "bpo-29406: asyncio SSL contexts leak sockets after calling close ↵Yury Selivanov2017-06-111-24/+1
| | | | | with certain servers (#409)" (#2111) This reverts commit a608d2d5a7f1aabe9bcbfc220135c5e126189390.
* bpo-29406: asyncio SSL contexts leak sockets after calling close with ↵Nikolay Kim2017-06-101-1/+24
| | | | | | | | certain servers (#409) * asyncio SSL contexts leak sockets after calling close with certain servers * cleanup _shutdown_timeout_handle on _fatal_error
* Break circular references when closing SSLTransport objects (#981)Michaël Sghaïer2017-06-091-4/+6
|
* Closing transport during handshake process leaks socket (#480)Nikolay Kim2017-06-091-2/+5
|
* bpo-29617: Remove Python 3.3 support from asyncio (GH-232)INADA Naoki2017-04-251-10/+5
|
* bpo-29742: asyncio get_extra_info() throws exception (#525)Nikolay Kim2017-03-121-1/+3
|
* Merge 3.5 (issue #28990)Yury Selivanov2016-12-161-0/+1
|\
| * Issue #28990: Fix SSL hanging if connection is closed before handshake ↵Yury Selivanov2016-12-161-0/+1
| | | | | | | | completed.
* | Merge 3.5 (issue #23749)Yury Selivanov2016-10-051-2/+5
|\ \ | |/
| * asyncio: Add "call_connection_made" arg to SSLProtocol.__init__Yury Selivanov2016-10-051-2/+5
| | | | | | | | | | | | | | | | | | Issue #23749: With this change it's possible to implement starttls as a separate package on PyPI, or even by copying/pasting a small snipped of code in your project. It's expected that we'll figure out the API design for starttls during 3.6, so that we can add it in 3.7.
* | Merge 3.5 (asyncio)Yury Selivanov2016-09-121-0/+6
|\ \ | |/
| * asyncio: Add set_protocol / get_protocol methods to TransportsYury Selivanov2016-09-121-0/+6
| |
* | Merge 3.5 (asyncio)Yury Selivanov2016-06-281-0/+1
|\ \ | |/
| * asyncio: Fix NameError in sslproto _fatal_error()Yury Selivanov2016-06-281-0/+1
| | | | | | | | Patch by Richard Walker.
* | Issue #27076: Merge spelling from 3.5Martin Panter2016-05-261-1/+1
|\ \ | |/
| * Issue #27076: Doc, comment and tests spelling fixesMartin Panter2016-05-261-1/+1
| | | | | | | | Most fixes to Doc/ and Lib/ directories by Ville Skyttä.
* | Merge 3.5 (asyncio)Victor Stinner2016-04-011-1/+1
|\ \ | |/
| * asyncio: Don't log ConnectionAbortedErrorVictor Stinner2016-04-011-1/+1
| | | | | | | | | | Issue #26509: In fatal error handlers, don't log ConnectionAbortedError which occur on Windows.
* | Add a source parameter to warnings.warn()Victor Stinner2016-03-221-1/+2
|/ | | | | | | | Issue #26604: * Add a new optional source parameter to _warnings.warn() and warnings.warn() * Modify asyncore, asyncio and _pyio modules to set the source parameter when logging a ResourceWarning warning
* asyncio: Add Transport.is_closing()Yury Selivanov2015-11-161-0/+3
| | | | See https://github.com/python/asyncio/pull/291 for details.
* Issue #25523: Further a-to-an corrections.Serhiy Storchaka2015-11-021-1/+1
|
* Issue #25114, asyncio: add ssl_object extra info to SSL transportsVictor Stinner2015-09-211-0/+4
| | | | | | 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).
* asyncio: Make sure BaseException is re-raised in SSLProtocolYury Selivanov2015-08-051-1/+6
|
* asyncio: Sync with upstream (compat module)Yury Selivanov2015-08-041-2/+2
|
* Issue #23243, asyncio: Emit a ResourceWarning when an event loop or a transportVictor Stinner2015-01-291-0/+13
| | | | is not explicitly closed. Close also explicitly transports in test_sslproto.
* asyncio: SSL transports now clear their reference to the waiterVictor Stinner2015-01-281-7/+13
| | | | | | | * Rephrase also the comment explaining why the waiter is not awaken immediatly. * SSLProtocol.eof_received() doesn't instanciate ConnectionResetError exception directly, it will be done by Future.set_exception(). The exception is not used if the waiter was cancelled or if there is no waiter.
* asyncio: Fix SSLProtocol.eof_received()Victor Stinner2015-01-281-0/+4
| | | | Wake-up the waiter if it is not done yet.
* asyncio: sync with TulipVictor Stinner2015-01-271-1/+0
| | | | | | | | | | * Remove unused SSLProtocol._closing attribute * test_sslproto: skip test if ssl module is missing * Python issue #23208: Don't use the traceback of the current handle if we already know the traceback of the source. The handle may be more revelant, but having 3 tracebacks (handle, source, exception) becomes more difficult to read. The handle may be preferred later but it requires more work to make this choice.
* SSLProtocol: set the _transport attribute in the constructorVictor Stinner2015-01-151-0/+1
|
* Issue #22560: Fix typo: call -> call_soonVictor Stinner2015-01-151-1/+1
|
* Issue #22560: Fix SSLProtocol._on_handshake_complete()Victor Stinner2015-01-151-2/+6
| | | | | | Don't call immediatly self._process_write_backlog() but schedule the call using call_soon(). _on_handshake_complete() can be called indirectly from _process_write_backlog(), and _process_write_backlog() is not reentrant.
* Issue #23197, asyncio: On SSL handshake failure, check if the waiter isVictor Stinner2015-01-141-2/+3
| | | | | | | cancelled before setting its exception. * Add unit tests for this case. * Cleanup also sslproto.py
* Issue #22560: New SSL implementation based on ssl.MemoryBIOVictor Stinner2015-01-131-0/+640
The new SSL implementation is based on the new ssl.MemoryBIO which is only available on Python 3.5. On Python 3.4 and older, the legacy SSL implementation (using SSL_write, SSL_read, etc.) is used. The proactor event loop only supports the new implementation. The new asyncio.sslproto module adds _SSLPipe, SSLProtocol and _SSLProtocolTransport classes. _SSLPipe allows to "wrap" or "unwrap" a socket (switch between cleartext and SSL/TLS). Patch written by Antoine Pitrou. sslproto.py is based on gruvi/ssl.py of the gruvi project written by Geert Jansen. This change adds SSL support to ProactorEventLoop on Python 3.5 and newer! It becomes also possible to implement STARTTTLS: switch a cleartext socket to SSL.