(original) (raw)
On Tue, Mar 19, 2013 at 11:08 AM, kristjan.jonsson <python-checkins@python.org> wrote:
http://hg.python.org/cpython/rev/8ec39bfd1f01
changeset: � 82764:8ec39bfd1f01
branch: � � �2.7
parent: � � �82740:b10ec5083a53
user: � � � �Kristj�n Valur J�nsson <sweskman@gmail.com>
date: � � � �Tue Mar 19 10:58:59 2013 -0700
summary:
� Issue #9090 : Error code 10035 calling socket.recv() on a socket with a timeout
�(WSAEWOULDBLOCK - A non-blocking socket operation could not be completed
�immediately)
[...]
+- Issue #9090: When a socket with a timeout fails with EWOULDBLOCK or EAGAIN,
+ �retry the select() loop instead of bailing out. �This is because select()
+ �can incorrectly report a socket as ready for reading (for example, if it
+ �received some data with an invalid checksum).
Might I recommend treating EINTR the same way? It has the same issue of popping up, rarely, when you least expect it, and messing with your code.