[ekg2-commit] r4224 - trunk/ekg: trunk/ekg/net.c
SVN commit
svn w toxygen.net
Czw, 7 Sie 2008, 23:35:01 CEST
Author: darkjames
Date: 2008-08-07 23:35:01 +0200 (Thu, 07 Aug 2008)
New Revision: 4224
Modified:
trunk/ekg/net.c
Log:
- fix some fd-leaks
Modified: trunk/ekg/net.c
===================================================================
--- trunk/ekg/net.c 2008-08-07 19:03:59 UTC (rev 4223)
+++ trunk/ekg/net.c 2008-08-07 21:35:01 UTC (rev 4224)
@@ -383,8 +383,10 @@
*address = NULL;
- if (array_count(a) < 3)
+ if (array_count(a) < 3) {
+ array_free(a);
return 0;
+ }
addr = a[1];
*family = atoi(a[2]);
@@ -450,7 +452,8 @@
if (type == 1)
return 0;
- else if (type || getsockopt(fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res) {
+
+ if (type || getsockopt(fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res) {
if (res)
debug_error("ekg_connect_handler(), error: %s\n", strerror(res));
ekg_connect_loop(c);
@@ -490,7 +493,6 @@
len = ekg_build_sin(host, c->port, &addr, &family);
debug_function("ekg_connect_loop(), connect: %s, sinlen: %d\n", host, len);
- xfree(host);
if (!len)
break;
@@ -503,19 +505,15 @@
if (ioctl(fd, FIONBIO, &one) == -1) {
const int err = errno;
debug_error("ekg_connect_loop(), ioctl() failed: %s\n", strerror(err));
+ close(fd);
break;
}
connret = connect(fd, addr, len);
- if (connret &&
-#ifdef NO_POSIX_SYSTEM
- (WSAGetLastError() != WSAEWOULDBLOCK)
-#else
- (errno != EINPROGRESS)
-#endif
- ) {
+ if (connret && errno != EINPROGRESS) {
const int err = errno;
debug_error("ekg_connect_loop(), connect() failed: %s\n", strerror(err));
+ close(fd);
break;
}
@@ -525,6 +523,7 @@
return 1;
} while (0);
+ xfree(host);
xfree(addr);
}
Więcej informacji o liście dyskusyjnej ekg2-commit