summaryrefslogtreecommitdiff
path: root/asyncio
Commit message (Collapse)AuthorAgeFilesLines
* Fix @coroutine for functions without __name__issue_222Victor Stinner2015-04-143-11/+23
| | | | | | | | Issue #222: Fix the @coroutine decorator for functions without __name__ attribute like functools.partial(). Enhance also the representation of a CoroWrapper if the coroutine function is a functools.partial().
* Python issue #23879: SelectorEventLoop.sock_connect() must not call connect()Victor Stinner2015-04-071-8/+6
| | | | | | | | again if the first call to connect() raises an InterruptedError. When the C function connect() fails with EINTR, the connection runs in background. We have to wait until the socket becomes writable to be notified when the connection succeed or fails.
* Fix _SelectorTransport.__repr__() if the event loop is closedVictor Stinner2015-03-271-1/+1
|
* Python issue #23456: Add missing @coroutine decoratorsVictor Stinner2015-03-183-0/+5
|
* Fix repr(BaseSubprocessTransport) if it didn't start yetVictor Stinner2015-03-101-2/+5
| | | | | Replace "running" with "not started" and don't show the pid if the subprocess didn't start yet.
* Python issue #23537: Remove 2 unused private methods of BaseSubprocessTransportVictor Stinner2015-02-271-6/+0
| | | | Methods only raise NotImplementedError and are never used.
* Merge branch remove-joinable-queue.A. Jesse Jiryu Davis2015-02-141-59/+43
|\
| * Tulip issue #220: Restore JoinableQueue as a deprecated alias for Queue.A. Jesse Jiryu Davis2015-02-141-1/+6
| | | | | | | | | | | | To more closely match the standard Queue, asyncio.Queue has "join" and "task_done". JoinableQueue remains as a deprecated alias for Queue to avoid needlessly breaking too much code that depended on it.
| * Docstring for Queue.join shouldn't mention threads.A. Jesse Jiryu Davis2015-01-231-2/+2
| |
| * Tulip issue #220: Merge JoinableQueue with Queue.A. Jesse Jiryu Davis2015-01-231-58/+37
| | | | | | | | | | To more closely match the standard Queue, asyncio.Queue has "join" and "task_done". JoinableQueue is deleted.
| * Python issue #23293: Cleanup IocpProactor.close()Victor Stinner2015-01-231-6/+1
| | | | | | | | | | The special case for connect_pipe() is not more needed. connect_pipe() doesn't use overlapped operations anymore.
| * Close transports on errorVictor Stinner2015-01-231-3/+21
| | | | | | | | | | Fix create_datagram_endpoint(), connect_read_pipe() and connect_write_pipe(): close the transport if the task is cancelled or on error.
| * Tulip issue #204: Fix IocpProactor.accept_pipe()Victor Stinner2015-01-221-24/+17
| | | | | | | | | | | | | | | | Overlapped.ConnectNamedPipe() now returns a boolean: True if the pipe is connected (if ConnectNamedPipe() failed with ERROR_PIPE_CONNECTED), False if the connection is in progress. This change removes multiple hacks in IocpProactor.
| * Python issue #23293: Rewrite IocpProactor.connect_pipe()Victor Stinner2015-01-221-17/+26
| | | | | | | | | | | | | | | | Add _overlapped.ConnectPipe() which tries to connect to the pipe for asynchronous I/O (overlapped): call CreateFile() in a loop until it doesn't fail with ERROR_PIPE_BUSY. Use an increasing delay between 1 ms and 100 ms. Remove Overlapped.WaitNamedPipeAndConnect() which is no more used.
| * IocpProactor.close(): don't cancel futures which are already cancelledVictor Stinner2015-01-221-3/+7
| |
| * Python issue #23095: IocpProactor.close() must not cancel pendingVictor Stinner2015-01-221-0/+6
| | | | | | | | _WaitCancelFuture futures
| * BaseEventLoop._create_connection_transport() catchs any exception, not onlyVictor Stinner2015-01-221-1/+1
| | | | | | | | Exception
| * Python issue #23095: Rewrite _WaitHandleFuture.cancel()Victor Stinner2015-01-211-34/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change fixes a race conditon related to _WaitHandleFuture.cancel() leading to Python crash or "GetQueuedCompletionStatus() returned an unexpected event" logs. Before, the overlapped object was destroyed too early, it was possible that the wait completed whereas the overlapped object was already destroyed. Sometimes, a different overlapped was allocated at the same address, leading to unexpected completition. _WaitHandleFuture.cancel() now waits until the wait is cancelled to clear its reference to the overlapped object. To wait until the cancellation is done, UnregisterWaitEx() is used with an event instead of UnregisterWait(). To wait for this event, a new _WaitCancelFuture class was added. It's a simplified version of _WaitCancelFuture. For example, its cancel() method calls UnregisterWait(), not UnregisterWaitEx(). _WaitCancelFuture should not be cancelled. The overlapped object is kept alive in _WaitHandleFuture until the wait is unregistered. Other changes: * Add _overlapped.UnregisterWaitEx() * Remove fast-path in IocpProactor.wait_for_handle() to immediatly set the result if the wait already completed. I'm not sure that it's safe to call immediatly UnregisterWaitEx() before the completion was signaled. * Add IocpProactor._unregistered() to forget an overlapped which may never be signaled, but may be signaled for the next loop iteration. It avoids to block forever IocpProactor.close() if a wait was cancelled, and it may also avoid some "... unexpected event ..." warnings.
| * pyflakes: remove unused importVictor Stinner2015-01-161-1/+0
| |
| * Enhance BaseProactorEventLoop._loop_self_reading()Victor Stinner2015-01-161-3/+9
| | | | | | | | | | | | | | | | * Handle correctly CancelledError: just exit * On error, log the exception and exit Don't try to close the event loop, it is probably running and so it cannot be closed.
| * Cleanup BaseEventLoop._create_connection_transport()Victor Stinner2015-01-161-1/+1
| | | | | | | | Remove the exc variable, it's not used.
| * Backout changeset 3a06020af8cfVictor Stinner2015-01-151-21/+4
| | | | | | | | | | | | | | StreamWriter: close() now clears the reference to the transport StreamWriter now raises an exception if it is closed: write(), writelines(), write_eof(), can_write_eof(), get_extra_info(), drain().
| * Python issue #23219: cancelling wait_for() now cancels the taskVictor Stinner2015-01-151-4/+8
| |
| * Close the transport on subprocess creation failureVictor Stinner2015-01-152-2/+11
| |
| * Fix _ProactorBasePipeTransport.close()Victor Stinner2015-01-151-1/+3
| | | | | | | | | | | | | | Set the _read_fut attribute to None after cancelling it. This change should fix a race condition with _ProactorWritePipeTransport._pipe_closed().
| * Fix _ProactorBasePipeTransport.__repr__()Victor Stinner2015-01-151-3/+3
| | | | | | | | Check if the _sock attribute is None to check if the transport is closed.
| * Python issue #23243: Fix _UnixWritePipeTransport.close()Victor Stinner2015-01-151-1/+1
| | | | | | | | | | Do nothing if the transport is already closed. Before it was not possible to close the transport twice.
| * SSLProtocol: set the _transport attribute in the constructorVictor Stinner2015-01-151-0/+1
| |
| * Python issue #23242: SubprocessStreamProtocol now closes the subprocessVictor Stinner2015-01-151-1/+4
| | | | | | | | | | | | transport at subprocess exit. Clear also its reference to the transport.
| * Python 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.
| * StreamWriter: close() now clears the reference to the transportVictor Stinner2015-01-151-4/+21
| | | | | | | | | | StreamWriter now raises an exception if it is closed: write(), writelines(), write_eof(), can_write_eof(), get_extra_info(), drain().
| * PipeHandle now uses None instead of -1 for a closed handleVictor Stinner2015-01-141-5/+5
| | | | | | | | Sort also imports in windows_utils.
| * Fix BaseEventLoop._create_connection_transport()Victor Stinner2015-01-141-1/+6
| | | | | | | | | | Close the transport if the creation of the transport (if the waiter) gets an exception.
| * _ProactorBasePipeTransport now sets _sock to None when the transport is closedVictor Stinner2015-01-141-0/+1
| |
| * Fix BaseSubprocessTransport.close()Victor Stinner2015-01-141-0/+2
| | | | | | | | Ignore pipes for which the protocol is not set yet (still equal to None).
| * TestLoop.close() now calls the close() method of the parent class ↵Victor Stinner2015-01-141-0/+1
| | | | | | | | (BaseEventLoop)
| * cleanup BaseSelectorEventLoopVictor Stinner2015-01-141-2/+3
| | | | | | | | Create the protocol on a separated line for readability and ease debugging.
| * Fix BaseSubprocessTransport._kill_wait()Victor Stinner2015-01-141-1/+1
| | | | | | | | Set the _returncode attribute, so close() doesn't try to terminate the process.
| * UNIX pipe transports: add closed/closing in repr()Victor Stinner2015-01-141-2/+12
| | | | | | | | | | Add "closed" or "closing" state in the __repr__() method of _UnixReadPipeTransport and _UnixWritePipeTransport classes.
| * Python issue #23197: On SSL handshake failure on matching hostname, check ifVictor Stinner2015-01-141-1/+2
| | | | | | | | the waiter is cancelled before setting its exception.
| * Python issue #23197: On SSL handshake failure, check if the waiter is cancelledVictor Stinner2015-01-142-2/+2
| | | | | | | | | | | | before setting its exception. Add unit tests for this case.
| * Cleanup sslproto.pyVictor Stinner2015-01-141-1/+2
| |
| * Python issue #23173: Fix SubprocessStreamProtocol.connection_made() to handleVictor Stinner2015-01-141-1/+3
| | | | | | | | | | | | cancelled waiter. Add unit test cancelling subprocess methods.
| * Python issue #23173: If an exception is raised during the creation of aVictor Stinner2015-01-142-26/+63
| | | | | | | | | | subprocess, kill the subprocess (close pipes, kill and read the return status). Log an error in such case.
| * Python issue #23198: Reactor StreamReaderVictor Stinner2015-01-141-25/+22
| | | | | | | | | | | | - Add a new _wakeup_waiter() method - Replace _create_waiter() method with a _wait_for_data() coroutine function - Use the value None instead of True or False to wake up the waiter
| * Python issue #22560: New SSL implementation based on ssl.MemoryBIOVictor Stinner2015-01-144-27/+694
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * Python issue #22922: Fix ProactorEventLoop.close()Victor Stinner2015-01-131-1/+7
| | | | | | | | | | Close the IocpProactor before closing the event loop. IocpProactor.close() can call loop.call_soon(), which is forbidden when the event loop is closed.
| * Python issue #23209, #23225: selectors.BaseSelector.get_key() now raises aVictor Stinner2015-01-131-0/+3
| | | | | | | | | | | | RuntimeError if the selector is closed. And selectors.BaseSelector.close() now clears its internal reference to the selector mapping to break a reference cycle. Initial patch written by Martin Richard.
| * Python issue #23209: Revert change on selectors, test_selectors failed.Victor Stinner2015-01-091-1/+0
| |
| * Python issue #23209: Break some reference cycles in asyncio. Patch written byVictor Stinner2015-01-093-1/+3
| | | | | | | | Martin Richard.