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.
This commit is contained in:
Björn Stenberg 2013-11-12 21:09:03 +01:00 коммит произвёл Steve Holme
Родитель 1f0616ea1a
Коммит ed1662c374
1 изменённых файлов: 2 добавлений и 3 удалений

Просмотреть файл

@ -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;
}