Commit graph

43198 commits

Author SHA1 Message Date
Victor Stinner
de993bd9b6 (Merge 3.4) asyncio, Tulip issue 205: Fix a race condition in
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.
2014-08-31 15:08:21 +02:00
Victor Stinner
d5aeccf976 asyncio, Tulip issue 205: Fix a race condition in 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.
2014-08-31 15:07:57 +02:00
R David Murray
b10be15508 Merge #22215: have the smtplib 'quit' command reset the state. 2014-08-30 16:55:45 -04:00
R David Murray
0cff49fcf9 #22215: have the smtplib 'quit' command reset the state.
Without this reset, starttls would fail if a connect/starttls was done after a
quit, because smtplib assumed the existing value of emspt_features was
accurate, but it gets reset when starttls completes (and the new value does
not contain the starttls capability, since tls is already started at that
point).  (There may be additional places where this lack of reset was an
issue as well.)

Patch by Milan Oberkirch.
2014-08-30 16:51:59 -04:00
Antoine Pitrou
5ce8f35931 Issue #22098: ctypes' BigEndianStructure and LittleEndianStructure now define an empty __slots__ so that subclasses don't always get an instance dict.
Patch by Claudiu Popa.
2014-08-30 00:37:18 +02:00
Antoine Pitrou
fa9211b11d Issue #22185: Fix an occasional RuntimeError in threading.Condition.wait() caused by mutation of the waiters queue without holding the lock.
Patch by Doug Zongker.
2014-08-29 23:27:33 +02:00
Antoine Pitrou
a64b92edd3 Issue #22185: Fix an occasional RuntimeError in threading.Condition.wait() caused by mutation of the waiters queue without holding the lock.
Patch by Doug Zongker.
2014-08-29 23:26:36 +02:00
Berker Peksag
0dc10e0d1c Issue #22182: Use e.args to unpack exceptions correctly in distutils.file_util.move_file.
Patch by Claudiu Popa.
2014-08-29 07:09:25 +03:00
Berker Peksag
6685883c02 Issue #22182: Use e.args to unpack exceptions correctly in distutils.file_util.move_file.
Patch by Claudiu Popa.
2014-08-29 07:07:35 +03:00
Victor Stinner
e6128a4a80 (Merge 3.4) asyncio, Tulip issue 201: Fix a race condition in wait_for()
Don't raise a TimeoutError if we reached the timeout and the future completed
in the same iteration of the event loop. A side effect of the bug is that
Queue.get() looses items.
2014-08-28 11:19:46 +02:00
Victor Stinner
59e0802301 asyncio, Tulip issue 201: Fix a race condition in wait_for()
Don't raise a TimeoutError if we reached the timeout and the future completed
in the same iteration of the event loop. A side effect of the bug is that
Queue.get() looses items.
2014-08-28 11:19:25 +02:00
Gregory P. Smith
a232613679 The webbrowser module now uses subprocess's start_new_session=True rather
than a potentially risky preexec_fn=os.setsid call.
2014-08-27 09:41:05 -07:00
Gregory P. Smith
feac3980ce The webbrowser module now uses subprocess's start_new_session=True rather
than a potentially risky preexec_fn=os.setsid call.
2014-08-27 09:34:38 -07:00
Victor Stinner
7cea44d3cf Issue #22042: Fix test_signal on Windows 2014-08-27 14:02:36 +02:00
Victor Stinner
3822760f2d Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file
descriptor is in blocking mode.
2014-08-27 12:59:44 +02:00
Terry Jan Reedy
86cc17e69e Merge with 3.4 2014-08-27 01:58:57 -04:00
Terry Jan Reedy
2ced87f3e6 Issue #22065: Remove the now unsed configGUI menu parameter and arguments. 2014-08-27 01:58:40 -04:00
Terry Jan Reedy
dfb110d8a3 Merge with 3.4 2014-08-27 01:44:13 -04:00
Terry Jan Reedy
8450c53315 Issue #22065: Menus, unlike Menubottons, do not have a state option.
Since a new demo can now be loaded while one is running,
adjust loadfile to do the same cleanup as stopIt.
2014-08-27 01:43:50 -04:00
Stefan Krah
fc452518e6 Merge 3.4. 2014-08-26 21:32:26 +02:00
Stefan Krah
cf26115651 Introduce and check for MPD_VERSION_HEX for precise management of builds
with an external libmpdec.
2014-08-26 21:31:47 +02:00
Stefan Krah
9ea83cff47 Merge 3.4. 2014-08-26 20:47:32 +02:00
Stefan Krah
298131a448 Issue #22090: Fix '%' formatting for infinities and NaNs. 2014-08-26 20:46:49 +02:00
Victor Stinner
54c69c2fe3 (Merge 3.4) asyncio, tulip issue 203: Add _FlowControlMixin.get_write_buffer_limits()
method
2014-08-26 00:23:23 +02:00
Victor Stinner
52bb949fd3 asyncio, tulip issue 203: Add _FlowControlMixin.get_write_buffer_limits() method 2014-08-26 00:22:28 +02:00
Victor Stinner
83b9ea4942 (Merge 3.4) asyncio: sync with Tulip
* 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.
2014-08-25 23:22:54 +02:00
Victor Stinner
b261475a48 asyncio: sync with Tulip
* 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.
2014-08-25 23:20:52 +02:00
Benjamin Peterson
ca18be6db2 merge 3.4 (#22265) 2014-08-24 18:08:22 -05:00
Benjamin Peterson
8e16351545 allow test to work on implementations not using ref-counting (closes #22265) 2014-08-24 18:07:28 -05:00
Benjamin Peterson
d475731c54 merge 3.4 (#22267) 2014-08-24 18:04:25 -05:00
Benjamin Peterson
18bb702182 fix some test_weakref tests to not rely on ref-counting (closes #22267) 2014-08-24 18:02:15 -05:00
Antoine Pitrou
cdcafb78b2 Issue #16808: inspect.stack() now returns a named tuple instead of a tuple.
Patch by Daniel Shahaf.
2014-08-24 10:50:28 -04:00
Serhiy Storchaka
1fa36268cf Issue #22034: Improve handling of wrong argument types in posixpath.join(). 2014-08-24 12:23:36 +03:00
Serhiy Storchaka
549c1972f2 Issue #22034: Got rid of misleading error message for bytearray arguments in
posixpath.join().
2014-08-24 12:18:09 +03:00
Serhiy Storchaka
66106626ed Issue #22236: Tkinter tests now don't reuse default root window. New root
window is created for every test class.

Fixed Tkinter images copying operations in NoDefaultRoot mode.

Tcl command names generated for "after" callbacks now contains a name of
original function.
2014-08-24 09:10:58 +03:00
Serhiy Storchaka
d00aff2f62 Issue #22236: Tkinter tests now don't reuse default root window. New root
window is created for every test class.

Fixed Tkinter images copying operations in NoDefaultRoot mode.

Tcl command names generated for "after" callbacks now contains a name of
original function.
2014-08-24 09:07:47 +03:00
Terry Jan Reedy
133250c5b2 Merge heads. 2014-08-23 18:23:50 -04:00
Terry Jan Reedy
130f303ba5 Merge heads. 2014-08-23 18:22:43 -04:00
Antoine Pitrou
ef3b9ed0ac Issue #2527: Add a *globals* argument to timeit functions, in order to override the globals namespace in which the timed code is executed.
Patch by Ben Roberts.
2014-08-22 23:13:50 -04:00
Berker Peksag
04bb443eb6 Issue #19447: Use importlib.util.cache_from_source() instead of `bad_coding + 'c'`.
Thanks to Arfrever Frehtes Taifersar Arahesis.
2014-08-22 20:52:37 +03:00
Berker Peksag
0242f79051 Issue #19447: Use importlib.util.cache_from_source() instead of `bad_coding + 'c'`.
Thanks to Arfrever Frehtes Taifersar Arahesis.
2014-08-22 20:52:15 +03:00
Berker Peksag
5296db908a Issue #19447: Add a test case to py_compile.compile() to make sure
it don't raise an exception if doraise is False.

Patch by Bohuslav "Slavek" Kabrda.
2014-08-22 20:18:12 +03:00
Berker Peksag
31f8a677a4 Issue #19447: Add a test case to py_compile.compile() to make sure
it don't raise an exception if doraise is False.

Patch by Bohuslav "Slavek" Kabrda.
2014-08-22 20:17:32 +03:00
Brett Cannon
145759c892 Merge for issue #22191 fix 2014-08-22 10:46:07 -04:00
Brett Cannon
14ad5319d9 Issue #22191: Fix warnings.__all__.
Thanks to Jon Poler for the patch.
2014-08-22 10:44:47 -04:00
Brett Cannon
7c08b19f86 Issue #19714: Tests for importlib.machinery.WindowsRegistryFinder.
Patch by Claudiu Popa, review by Martin v. Löwis.
2014-08-22 10:28:42 -04:00
Senthil Kumaran
f499931b33 merge from 3.4
Fix issue22245 - Fix urllib2_localnet test.

Do not aggresively close wfile in the do_GET method in the BasicAuthHandler.
2014-08-22 16:27:06 +05:30
Senthil Kumaran
a969ae2e11 Fix issue22245 - Fix urllib2_localnet test.
Do not aggresively close wfile in the do_GET method in the BasicAuthHandler.
2014-08-22 16:26:21 +05:30
Antoine Pitrou
55ac5b3f7b Issue #22118: Switch urllib.parse to use RFC 3986 semantics for the resolution of relative URLs, rather than RFCs 1808 and 2396.
Patch by Demian Brecht.
2014-08-21 19:16:17 -04:00
Serhiy Storchaka
a7eb746278 Issue #21549: Added the "members" parameter to TarFile.list(). 2014-08-21 10:01:16 +03:00