Charles-François Natali <neolo...@free.fr> added the comment:

Hello Xavier,

> select (an poll) returns a read event and an exceptional condition 
> for the socket, but there is no normal data to read, only out-of-band
> data.

That's against POSIX:
"""
POLLIN
Data other than high-priority data may be read without blocking. For STREAMS, 
this flag is set in revents even if the message is of zero length. 
"""

And indeed, that's a known kernel regression introduced in 2.6.28, and fixed by 
this commit:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b634f87522dff87712df8bda2a6c9061954d552a
http://kerneltrap.org/mailarchive/linux-netdev/2010/3/15/6271951

Note that there might still be a problem with the current code:
recv() can return EAGAIN on a FD reported readable/writable by select() (for 
example if the network stack received an input packet and then discards it 
because of an invalid checksum, or because the output socket buffer has room 
left but not enough to accomodate the packet we're trying to send): I'll have 
to think a bit to see if we can do something about this, but that's another 
issue.
Closing as invalid.

----------
nosy: +neologix
resolution:  -> invalid
stage:  -> committed/rejected
status: open -> closed

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13310>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to