freebsd-ports/databases/libmemcached/files/patch-libmemcached__memcached_connect.c
Yen-Ming Lee 95ed7e38b1 - close socket if poll/select failed
- bump PORTREVISION

Submitted by:	vanilla
2008-10-23 14:06:44 +00:00

32 lines
1,006 B
C

--- libmemcached/memcached_connect.c.orig 2008-10-23 06:19:25.000000000 -0700
+++ libmemcached/memcached_connect.c 2008-10-23 06:23:16.000000000 -0700
@@ -225,6 +225,7 @@
{
struct pollfd fds[1];
int error;
+ socklen_t len;
memset(&fds, 0, sizeof(struct pollfd));
fds[0].fd= ptr->fd;
@@ -237,6 +238,7 @@
}
else if (error != 1 || fds[0].revents & POLLERR)
{
+closesock:
ptr->cached_errno= errno;
WATCHPOINT_ERRNO(ptr->cached_errno);
WATCHPOINT_NUMBER(ptr->root->connect_timeout);
@@ -259,6 +261,13 @@
return MEMCACHED_ERRNO;
}
+ len = sizeof (error);
+ if (getsockopt (ptr->fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0)
+ goto closesock;
+
+ if (error > 0)
+ goto closesock;
+
break;
}
/* We are spinning waiting on connect */