|
From: <sv...@va...> - 2009-04-29 01:51:26
|
Author: njn
Date: 2009-04-29 02:51:19 +0100 (Wed, 29 Apr 2009)
New Revision: 9667
Log:
Make this work on Darwin. Thanks to help from Filipe Cabecinhas and Michael
Smith.
Modified:
branches/DARWIN/none/tests/fdleak_ipv4.c
Modified: branches/DARWIN/none/tests/fdleak_ipv4.c
===================================================================
--- branches/DARWIN/none/tests/fdleak_ipv4.c 2009-04-28 14:37:31 UTC (rev 9666)
+++ branches/DARWIN/none/tests/fdleak_ipv4.c 2009-04-29 01:51:19 UTC (rev 9667)
@@ -24,7 +24,7 @@
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
- addr.sin_port = 12321;
+ addr.sin_port = htons(12321);
DO( bind(s, (struct sockaddr *)&addr, sizeof(addr)) );
@@ -42,16 +42,20 @@
struct sockaddr_in addr;
char buf[1024];
- s = DO( socket(PF_INET, SOCK_STREAM, 0) );
-
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
- addr.sin_port = 12321;
+ addr.sin_port = htons(12321);
do {
count++;
+ s = DO( socket(PF_INET, SOCK_STREAM, 0) );
ret = connect(s, (struct sockaddr *)&addr, sizeof(addr));
- if (ret == -1) sleep(1);
+ if (ret == -1) {
+ // If the connect() failed, we close the socket and reopen it before
+ // trying again. This isn't necessary on Linux, but it is on Darwin.
+ DO( close(s) );
+ sleep(1);
+ }
} while (count < 10 && ret == -1);
if (ret == -1) {
|