summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Python issue #23243: On Python 3.4 and newer, emit a ResourceWarning when anHEADmasterVictor Stinner2015-01-299-6/+101
| | | | event loop or a transport is not explicitly closed
* Python issue #23243: test_sslproto: Close explicitly transportsVictor Stinner2015-01-291-4/+3
|
* Document Protocol state machineVictor Stinner2015-01-291-0/+5
|
* Fix BaseSelectorEventLoop._accept_connection()Victor Stinner2015-01-292-19/+62
| | | | | * Close the transport on error * In debug mode, log errors using call_exception_handler()
* Fix _UnixReadPipeTransport and _UnixWritePipeTransportVictor Stinner2015-01-292-24/+22
| | | | Only start reading when connection_made() has been called.
* Cleanup gather(): use cancelled() method instead of using private FutureVictor Stinner2015-01-291-1/+1
| | | | attribute
* Fix _SelectorSslTransport.close()Victor Stinner2015-01-292-2/+20
| | | | | | | | Don't call protocol.connection_lost() if protocol.connection_made() was not called yet: if the SSL handshake failed or is still in progress. The close() method can be called if the creation of the connection is cancelled, by a timeout for example.
* _SelectorTransport constructor: extra parameter is now optionalVictor Stinner2015-01-291-1/+1
|
* Fix _SelectorDatagramTransport constructorVictor Stinner2015-01-291-1/+3
| | | | Only start reading after connection_made() has been called.
* BaseSubprocessTransport._kill_wait() now also call close()Victor Stinner2015-01-291-0/+3
| | | | close() closes pipes, which is not None yet by _kill_wait().
* Fix _SelectorSocketTransport constructorVictor Stinner2015-01-292-6/+14
| | | | | Only start reading when connection_made() has been called: protocol.data_received() must not be called before protocol.connection_made().
* SSL transports now clear their reference to the waiterVictor Stinner2015-01-294-21/+32
| | | | | | | * 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.
* Fix SSLProtocol.eof_received()Victor Stinner2015-01-282-11/+33
| | | | Wake-up the waiter if it is not done yet.
* Remove unused SSLProtocol._closing attributeVictor Stinner2015-01-281-1/+0
|
* test_sslproto: skip test if ssl module is missingVictor Stinner2015-01-271-0/+5
|
* Python issue #23208: Don't use the traceback of the current handle if weVictor Stinner2015-01-261-1/+2
| | | | | | | | 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.
* _overlapped.ConnectPipe(): release the GILVictor Stinner2015-01-261-0/+3
|
* Tulip issue #204: Fix IocpProactor.recv()Victor Stinner2015-01-262-9/+15
| | | | | | | | | If ReadFile() fails with ERROR_BROKEN_PIPE, the operation is not pending: don't register the overlapped. I don't know if WSARecv() can fail with ERROR_BROKEN_PIPE. Since Overlapped.WSARecv() already handled ERROR_BROKEN_PIPE, let me guess that it has the same behaviour than ReadFile().
* Python issue #23095: Fix _WaitHandleFuture.cancel()Victor Stinner2015-01-261-20/+17
| | | | | If UnregisterWaitEx() fais with ERROR_IO_PENDING, it doesn't mean that the wait is unregistered yet. We still have to wait until the wait is cancelled.
* Python issue #23293: Rewrite IocpProactor.connect_pipe() as a coroutineVictor Stinner2015-01-262-21/+31
| | | | | | | Use a coroutine with asyncio.sleep() instead of call_later() to ensure that the schedule call is cancelled. Add also a unit test cancelling connect_pipe().
* PipeHandle.fileno() now raises an exception if the pipe is closedVictor Stinner2015-01-261-0/+2
|
* Fix ProactorEventLoop.start_serving_pipe()Victor Stinner2015-01-261-1/+13
| | | | | If a client connected before the server was closed: drop the client (close the pipe) and exit
* Python issue #23208: Add BaseEventLoop._current_handleVictor Stinner2015-01-261-6/+19
| | | | | | | | | In debug mode, BaseEventLoop._run_once() now sets the BaseEventLoop._current_handle attribute to the handle currently executed. In release mode or when no handle is executed, the attribute is None. BaseEventLoop.default_exception_handler() displays the traceback of the current handle if available.
* Tulip issue #219: Fix comments in simple_tcp_server.py exampleVictor Stinner2015-01-231-2/+2
| | | | | Fixing some comments. The server listens on 12345 and client connects on 12345, but the comments state 1234. Patch written by bryan.neff.
* 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-222-26/+19
| | | | | | | | 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-222-110/+48
| | | | | | | | 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.
* release.py: Fix helpVictor Stinner2015-01-221-1/+2
|
* 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-212-34/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* test_selectors: use asyncio.test_support if test.support is missingVictor Stinner2015-01-211-1/+4
|
* pyflakes: remove unused importVictor Stinner2015-01-161-1/+0
|
* Enhance BaseProactorEventLoop._loop_self_reading()Victor Stinner2015-01-162-5/+12
| | | | | | | | * 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.
* tests: Remove unused function; inline another functionVictor Stinner2015-01-161-9/+1
|
* release.py: fix typoVictor Stinner2015-01-161-3/+3
|
* runtests.py: rephrase the message mentionning randomization of testsVictor Stinner2015-01-161-1/+1
|
* tox.ini: fix commentVictor Stinner2015-01-161-1/+2
|
* Cleanup BaseEventLoop._create_connection_transport()Victor Stinner2015-01-161-1/+1
| | | | Remove the exc variable, it's not used.
* Issue #22685: Fix test_pause_reading() of test_subprocessVictor Stinner2015-01-151-2/+12
| | | | | | | Override the connect_read_pipe() method of the loop to mock immediatly pause_reading() and resume_reading() methods. The test failed randomly on FreeBSD 9 buildbot and on Windows using trollius.
* 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-152-4/+35
|
* Close transports in testsVictor Stinner2015-01-154-3/+15
| | | | | | | | | * Use test_utils.run_briefly() to execute pending calls to really close transports * sslproto: mock also _SSLPipe.shutdown(), it's need to close the transport * pipe test: the test doesn't close explicitly the PipeHandle, so ignore the warning instead * test_popen: use the context manager ("with p:") to explicitly close pipes
* 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: Close explicitly transports in testsVictor Stinner2015-01-153-277/+226
|
* Python issue #23243: Close explicitly event loops in testsVictor Stinner2015-01-153-1/+20
|