2c8d851823
Should a connect fail, if the publication/server is unavailable or due to some other error, a positive value will be returned and errno is never set. If the application code checks for an explicit zero return from connect (success) or a negative return (failure), it will not catch the error and subsequent send() calls will fail as shown from the strace snippet below. socket(0x1e /* PF_??? */, SOCK_SEQPACKET, 0) = 3 connect(3, {sa_family=0x1e /* AF_??? */, sa_data="\2\1\322\4\0\0\322\4\0\0\0\0\0\0"}, 16) = 111 sendto(3, "test", 4, 0, NULL, 0) = -1 EPIPE (Broken pipe) The reason for this behaviour is that TIPC wrongly inverts error codes set in sk_err. Signed-off-by: Erik Hugne <erik.hugne@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
addr.c | ||
addr.h | ||
bcast.c | ||
bcast.h | ||
bearer.c | ||
bearer.h | ||
config.c | ||
config.h | ||
core.c | ||
core.h | ||
discover.c | ||
discover.h | ||
eth_media.c | ||
handler.c | ||
ib_media.c | ||
Kconfig | ||
link.c | ||
link.h | ||
log.c | ||
Makefile | ||
msg.c | ||
msg.h | ||
name_distr.c | ||
name_distr.h | ||
name_table.c | ||
name_table.h | ||
net.c | ||
net.h | ||
netlink.c | ||
node_subscr.c | ||
node_subscr.h | ||
node.c | ||
node.h | ||
port.c | ||
port.h | ||
ref.c | ||
ref.h | ||
server.c | ||
server.h | ||
socket.c | ||
subscr.c | ||
subscr.h | ||
sysctl.c |