summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/selector_events.py
Commit message (Collapse)AuthorAgeFilesLines
...
* don't require OpenSSL SNI to pass hostname to ssl functions (#22921)Benjamin Peterson2014-11-231-1/+1
| | | | Patch by Donald Stufft.
* asyncio: BaseSelectorEventLoop.close() now closes the self-pipe before callingVictor Stinner2014-11-201-1/+3
| | | | | the parent close() method. If the event loop is already closed, the self-pipe is not unregistered from the selector.
* asyncio: Move loop attribute to _FlowControlMixinVictor Stinner2014-11-051-2/+1
| | | | | | | | | Move the _loop attribute from the constructor of _SelectorTransport, _ProactorBasePipeTransport and _UnixWritePipeTransport classes to the constructor of the _FlowControlMixin class. Add also an assertion to explicit that the parent class must ensure that the loop is defined (not None)
* Issue #22641: In asyncio, the default SSL context for client connections is ↵Antoine Pitrou2014-10-151-6/+7
| | | | now created using ssl.create_default_context(), for stronger security.
* asyncio: enhance protocol representationVictor Stinner2014-10-121-1/+6
| | | | Add "closed" or "closing" to repr() of selector and proactor transports
* asyncio, Tulip issue 205: Fix a race condition in ↵Victor Stinner2014-08-311-13/+31
| | | | | | | | | | | | | | | | | | | | | | BaseSelectorEventLoop.sock_connect() There is a race condition in create_connection() used with wait_for() to have a timeout. sock_connect() registers the file descriptor of the socket to be notified of write event (if connect() raises BlockingIOError). When create_connection() is cancelled with a TimeoutError, sock_connect() coroutine gets the exception, but it doesn't unregister the file descriptor for write event. create_connection() gets the TimeoutError and closes the socket. If you call again create_connection(), the new socket will likely gets the same file descriptor, which is still registered in the selector. When sock_connect() calls add_writer(), it tries to modify the entry instead of creating a new one. This issue was originally reported in the Trollius project, but the bug comes from Tulip in fact (Trollius is based on Tulip): https://bitbucket.org/enovance/trollius/issue/15/after-timeouterror-on-wait_for This change fixes the race condition. It also makes sock_connect() more reliable (and portable) is sock.connect() raises an InterruptedError.
* asyncio: sync with TulipVictor Stinner2014-08-251-15/+16
| | | | | | | | | | | | | | | | | | | | | | | * PipeServer.close() now cancels the "accept pipe" future which cancels the overlapped operation. * Fix _SelectorTransport.__repr__() if the transport was closed * Fix debug log in BaseEventLoop.create_connection(): get the socket object from the transport because SSL transport closes the old socket and creates a new SSL socket object. Remove also the _SelectorSslTransport._rawsock attribute: it contained the closed socket (not very useful) and it was not used. * Issue #22063: socket operations (sock_recv, sock_sendall, sock_connect, sock_accept) of the proactor event loop don't raise an exception in debug mode if the socket are in blocking mode. Overlapped operations also work on blocking sockets. * Fix unit tests in debug mode: mock a non-blocking socket for socket operations which now raise an exception if the socket is blocking. * _fatal_error() method of _UnixReadPipeTransport and _UnixWritePipeTransport now log all exceptions in debug mode * Don't log expected errors in unit tests * Tulip issue 200: _WaitHandleFuture._unregister_wait() now catchs and logs exceptions. * Tulip issue 200: Log errors in debug mode instead of simply ignoring them.
* Close #22063: socket operations (socket,recv, sock_sendall, sock_connect,Victor Stinner2014-07-291-0/+8
| | | | | sock_accept) now raise an exception in debug mode if sockets are in blocking mode.
* asyncio: sync with TulipVictor Stinner2014-07-251-1/+4
| | | | | | | | * Tulip issue #196: IocpProactor._poll() clears the reference to the overlapped operation when the operation is done. It would be better to clear the reference in a new _OverlappedFuture.set_result() method, but it cannot be done yet because of a weird bug. * BaseSelectorEventLoop._write_to_self() now logs errors in debug mode.
* Python issue #21645, Tulip issue 192: Rewrite signal handlingVictor Stinner2014-07-171-1/+5
| | | | | | | | | | | | | | | | | | | Since Python 3.3, the C signal handler writes the signal number into the wakeup file descriptor and then schedules the Python call using Py_AddPendingCall(). asyncio uses the wakeup file descriptor to wake up the event loop, and relies on Py_AddPendingCall() to schedule the final callback with call_soon(). If the C signal handler is called in a thread different than the thread of the event loop, the loop is awaken but Py_AddPendingCall() was not called yet. In this case, the event loop has nothing to do and go to sleep again. Py_AddPendingCall() is called while the event loop is sleeping again and so the final callback is not scheduled immediatly. This patch changes how asyncio handles signals. Instead of relying on Py_AddPendingCall() and the wakeup file descriptor, asyncio now only relies on the wakeup file descriptor. asyncio reads signal numbers from the wakeup file descriptor to call its signal handler.
* asyncio: sync with TulipVictor Stinner2014-07-121-13/+76
| | | | | | | | | | | | | | | | | | | * Tulip issue #183: log socket events in debug mode - Log most important socket events: socket connected, new client, connection reset or closed by peer (EOF), etc. - Log time elapsed in DNS resolution (getaddrinfo) - Log pause/resume reading - Log time of SSL handshake - Log SSL handshake errors - Add a __repr__() method to many classes * Fix ProactorEventLoop() in debug mode. ProactorEventLoop._make_self_pipe() doesn't call call_soon() directly because it checks for the current loop which fails, because the method is called to build the event loop. * Cleanup _ProactorReadPipeTransport constructor. Not need to set again _read_fut attribute to None, it is already done in the base class.
* asyncio, Tulip issue 180: Make Server attributes and methods privateVictor Stinner2014-07-111-2/+2
| | | | | | | - loop, waiters and active_count attributes are now private - attach(), detach() and wakeup() methods are now private The sockets attribute remains public.
* asyncion, Tulip issue 181: BaseEventLoop.create_datagram_endpoint() now waitsVictor Stinner2014-07-081-3/+10
| | | | | until protocol.connection_made() has been called. Document also why transport constructors use a waiter.
* asyncio: sync with TulipVictor Stinner2014-07-071-1/+1
| | | | | Backout the "Tulip issue 181: Faster create_connection()" changeset, it was a mistake.
* asyncio: sync with TulipVictor Stinner2014-07-071-1/+1
| | | | | | | | - Tulip issue #181: Faster create_connection(). Call directly waiter.set_result() in the constructor of _ProactorBasePipeTransport and _SelectorSocketTransport, instead of using of delaying the call with call_soon(). - Cleanup iscoroutine()
* Closes #21886, #21447: Fix a race condition in asyncio when setting the resultVictor Stinner2014-07-051-2/+3
| | | | | of a Future with call_soon(). Add an helper, a private method, to set the result only if the future was not cancelled.
* asyncio, Tulip issue 171: BaseEventLoop.close() now raises an exception if theVictor Stinner2014-06-221-1/+1
| | | | | event loop is running. You must first stop the event loop and then wait until it stopped, before closing it.
* Tulip issue 83: document more asyncio functions in docstringsVictor Stinner2014-06-191-4/+37
|
* Closes #21595: asyncio.BaseSelectorEventLoop._read_from_self() now reads allVictor Stinner2014-06-191-4/+9
| | | | | | available bytes from the "self pipe", not only a single byte. This change reduces the risk of having the pipe full and so getting the innocuous "BlockingIOError: [Errno 11] Resource temporarily unavailable" message.
* Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoopVictor Stinner2014-06-101-8/+8
| | | | | | | | | | | Add BaseEventLoop._closed attribute and use it to check if the event loop was closed or not, instead of checking different attributes in each subclass of BaseEventLoop. run_forever() and run_until_complete() methods now raise a RuntimeError('Event loop is closed') exception if the event loop was closed. BaseProactorEventLoop.close() now also cancels "accept futures".
* Fix for raising exception not derived from BaseException in ↵Andrew Svetlov2014-05-271-1/+1
| | | | _SelectorSslTransport.resume_reading
* asyncio: Fix the second half of issue #21447: race in _write_to_self().Guido van Rossum2014-05-061-4/+11
|
* asyncio: Synchronize with TulipVictor Stinner2014-03-051-0/+8
| | | | | | | | | | | | * Issue #159: Fix windows_utils.socketpair() - Use "127.0.0.1" (IPv4) or "::1" (IPv6) host instead of "localhost", because "localhost" may be a different IP address - Reject also invalid arguments: only AF_INET/AF_INET6 with SOCK_STREAM (and proto=0) are supported * Reject add/remove reader/writer when event loop is closed. * Fix ResourceWarning warnings
* asyncio/windows_events.py: use more revelant names to overlapped callbacksVictor Stinner2014-02-261-2/+1
| | | | For example: "finish_recv", not just "finish".
* asyncio: Fix spelling and typos.Yury Selivanov2014-02-191-1/+1
| | | | Thanks to Vajrasky Kok for discovering some of them.
* asyncio, Tulip issue 139: Improve error messages on "fatal errors"Victor Stinner2014-02-191-10/+12
| | | | | Mention if the error was caused by a read or a write, and be more specific on the object (ex: "pipe transport" instead of "transport").
* asyncio.transports: Make _ProactorBasePipeTransport use _FlowControlMixinYury Selivanov2014-02-181-71/+2
|
* asyncio: New error handling API. Issue #20681.Yury Selivanov2014-02-181-8/+27
|
* ayncio, Tulip issue 129: BaseEventLoop.sock_connect() now raises an error ifVictor Stinner2014-02-131-12/+8
| | | | | the address is not resolved (hostname instead of an IP address) for AF_INET and AF_INET6 address families.
* asyncio: Tulip issue 112: Inline make_handle() into Handle constructorVictor Stinner2014-02-091-2/+2
|
* Issue #20505: Remove resolution and _granularity from selectors and asyncioVictor Stinner2014-02-071-1/+0
| | | | | * Remove selectors.BaseSelector.resolution attribute * Remove asyncio.BaseEventLoop._granularity attribute
* asyncio: Refactoring: move write flow control to a subclass/mixin.Guido van Rossum2014-01-291-37/+61
|
* Merge latest Tulip into asyncioVictor Stinner2014-01-251-1/+1
| | | | | | - Make the new granularity attribute private - Simplify BaseEventLoop._run_once(): avoid math.ceil(), use simple arithmetic instead
* Update asyncio from the Tulip projectVictor Stinner2014-01-251-0/+2
| | | | | | | | | | | | | | | | Major changes: - StreamReader.readexactly() now raises an IncompleteReadError if the end of stream is reached before we received enough bytes, instead of returning less bytes than requested. - Unit tests use the main asyncio module instead of submodules like events - _UnixWritePipeTransport now also supports character devices, as _UnixReadPipeTransport. Patch written by Jonathan Slenders. - Export more symbols: BaseEventLoop, BaseProactorEventLoop, BaseSelectorEventLoop, Queue and Queue sublasses, Empty, Full
* Issue #20311: asyncio: Add a granularity attribute to BaseEventLoop: maximumVictor Stinner2014-01-251-0/+1
| | | | | | between the resolution of the BaseEventLoop.time() method and the resolution of the selector. The granuarility is used in the scheduler to round time and deadline.
* Issue #19509: Finish implementation of check_hostnameChristian Heimes2013-12-051-11/+14
| | | | The new asyncio package now supports the new feature and comes with additional tests for SSL.
* asyncio: Change write buffer use to avoid O(N**2). Make write()/sendto() ↵Guido van Rossum2013-11-271-31/+51
| | | | accept bytearray/memoryview too. Change some asserts with proper exceptions.
* Keep asyncio working with Python 3.3 too.Guido van Rossum2013-11-231-2/+9
|
* Issue #19735: Implement private function ssl._create_stdlib_context() toChristian Heimes2013-11-231-4/+2
| | | | | create SSLContext objects in Python's stdlib module. It provides a single configuration point and makes use of SSLContext.load_default_certs().
* asyncio: Replace connection_refused() with error_received().Guido van Rossum2013-11-161-11/+6
|
* asyncio: Better-looking errors when ssl module cannot be imported. In part ↵Guido van Rossum2013-11-011-12/+19
| | | | by Arnaud Faure.
* asyncio: Log a warning when eof_received() returns true and using ssl.Guido van Rossum2013-11-011-1/+4
|
* asyncio: Refactor ssl transport ready loop (Nikolay Kim).Guido van Rossum2013-11-011-41/+53
|
* asyncio: Add server_hostname as create_connection() argument, with secure ↵Guido van Rossum2013-11-011-2/+2
| | | | default.
* asyncio: Fold some long lines.Guido van Rossum2013-11-011-1/+2
|
* asyncio: Pause accepting whenever accept() returns certain errors. Fixes ↵Guido van Rossum2013-11-011-6/+15
| | | | asyncio issue #78.
* asyncio: When not closing the connection after receiving EOF, still remove ↵Guido van Rossum2013-10-301-1/+6
| | | | the read handler.
* Issue #19299: fix refleak test failures in test_asyncioAntoine Pitrou2013-10-191-0/+1
|
* Verify hostname if verify_mode is CERT_OPTIONAL too.Guido van Rossum2013-10-191-1/+1
|
* Write flow control for asyncio (includes asyncio.streams overhaul).Guido van Rossum2013-10-181-14/+64
|