From 77354575335e5ee900a4ba126d4d76e34b9273e8 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 27 May 2014 13:17:29 +0930 Subject: [PATCH] net: don't return still-connecting fd. If one connect failed, we'd return the other one without waiting for the connect to complete. This resulted in read() returning 0, which was really weird. The downside: the poll doesn't seem to time out when the connect times out (Linux 3.13 x86-64). Signed-off-by: Rusty Russell --- ccan/net/net.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ccan/net/net.c b/ccan/net/net.c index 4c84ba7a..7867054d 100644 --- a/ccan/net/net.c +++ b/ccan/net/net.c @@ -159,6 +159,9 @@ int net_connect_complete(struct pollfd pfds[2]) } continue; } + if (!(pfds[i].revents & POLLOUT)) + continue; + if (getsockopt(pfds[i].fd, SOL_SOCKET, SO_ERROR, &err, &errlen) != 0) { net_connect_abort(pfds); -- 2.39.2