]> git.baikalelectronics.ru Git - kernel.git/commit
tipc: return POLLOUT for sockets in an unconnected state
authorErik Hugne <erik.hugne@ericsson.com>
Tue, 16 Oct 2012 14:47:06 +0000 (16:47 +0200)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Wed, 21 Nov 2012 19:54:32 +0000 (14:54 -0500)
commitd7d7823eed2b606d00d7af6f45c83ed773f3d7cf
tree76cf6a8e937f7168eac2c611bfc05125f3c90b4b
parentd213dd49a6c4838a64153e30b711f9a82df1dc2d
tipc: return POLLOUT for sockets in an unconnected state

If an implied connect is attempted on a nonblocking STREAM/SEQPACKET
socket during link congestion, the connect message will be discarded
and sendmsg will return EAGAIN. This is normal behavior, and the
application is expected to poll the socket until POLLOUT is set,
after which the connection attempt can be retried.
However, the POLLOUT flag is never set for unconnected sockets and
poll() always returns a zero mask. The application is then left without
a trigger for when it can make another attempt at sending the message.

The solution is to check if we're polling on an unconnected socket
and set the POLLOUT flag if the TIPC port owned by this socket
is not congested. The TIPC ports waiting on a specific link will be
marked as 'not congested' when the link congestion have abated.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
net/tipc/socket.c