Re: udp_recvmsg: possible bug causing infinite hang?

From
David S. Miller <davem@davemloft.net>
Date
2004-10-10 01:45:03
Reply to
Chad N. Tindel, 2004-10-10
On Sat, 9 Oct 2004 18:38:58 -0700 (PDT)
"Chad N. Tindel" [off-list ref] wrote:
User space code sends a datagram on a blocking socket, and then calls
select() or poll() to wait for the reply.
If you wish the socket not to block, mark the file descriptor
as non-blocking or pass in the appropriate MSG_* flag into
recvmsg().

Select() returning that a filedescriptor is readable does not
guarentee that a blocking socket will not block in the ead
call.

This behavior has been in the Linux kernel for an enourmous
amount of them, the change you are noticing going from EL 3 update
2 to update 3 is that previously we were returning -EAGAIN to
blocking sockets, instead we are properly blocking to wait for
another packet.

There is an enormous and long thread about this topic on the
linux-kernel list, please read there before we duplicate such
a long and tiring thread here.
Thread (15 messages) 15 messages, 9 authors, last reply 2004-10-12
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help