From ed1662c374361adf8a3bd44be8490891f37e074a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Stenberg?= Date: Tue, 12 Nov 2013 21:09:03 +0100 Subject: connect: Return the socket descriptor even on fail singleipconnect() did not return the open socket descriptor on some errors, thereby sometimes causing a socket leak. This patch ensures the socket is always returned. --- lib/connect.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/connect.c b/lib/connect.c index 67f73343c..91aac8b88 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -1027,6 +1027,8 @@ singleipconnect(struct connectdata *conn, conn->bits.ipv6 = (addr.family == AF_INET6)?TRUE:FALSE; #endif + *sockp = sockfd; + if(-1 == rc) { switch (error) { case EINPROGRESS: @@ -1040,7 +1042,6 @@ singleipconnect(struct connectdata *conn, case EAGAIN: #endif #endif - *sockp = sockfd; return CURLE_OK; default: @@ -1053,8 +1054,6 @@ singleipconnect(struct connectdata *conn, return CURLE_COULDNT_CONNECT; } } - else - *sockp = sockfd; return CURLE_OK; } -- cgit v1.2.3