Rev 299: AIX needs sin_len field for bind() in http://samba.org/~tridge/ctdb

tridge at samba.org tridge at samba.org
Mon May 14 23:42:53 GMT 2007


------------------------------------------------------------
revno: 299
revision-id: tridge at samba.org-20070514234252-lkr0iynk4eys7ff1
parent: tridge at samba.org-20070514040133-2ktprtc6t6161yy5
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Tue 2007-05-15 09:42:52 +1000
message:
  AIX needs sin_len field for bind()
modified:
  configure.ac                   configure.ac-20061117234101-o3qt14umlg9en8z0-10
  tcp/tcp_connect.c              tcp_connect.c-20061128004937-x70q1cu5xzg5g2tm-1
=== modified file 'configure.ac'
--- a/configure.ac	2007-05-05 07:18:06 +0000
+++ b/configure.ac	2007-05-14 23:42:52 +0000
@@ -30,6 +30,16 @@
 m4_include(libevents.m4)
 m4_include(ib/config.m4)
 
+AC_CACHE_CHECK([for sin_len in sock],ctdb_cv_HAVE_SOCK_SIN_LEN,[
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>],
+[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
+ctdb_cv_HAVE_SOCK_SIN_LEN=yes,ctdb_cv_HAVE_SOCK_SIN_LEN=no)])
+if test x"$ctdb_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
+    AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
+fi
+
 AC_SUBST(EXTRA_OBJ)
 
 AC_OUTPUT(Makefile)

=== modified file 'tcp/tcp_connect.c'
--- a/tcp/tcp_connect.c	2007-05-01 03:25:02 +0000
+++ b/tcp/tcp_connect.c	2007-05-14 23:42:52 +0000
@@ -125,6 +125,10 @@
 
 	set_nonblocking(tnode->fd);
 
+	ZERO_STRUCT(sock_out);
+#ifdef HAVE_SOCK_SIN_LEN
+	sock_out.sin_len = sizeof(sock_out);
+#endif
 	if (ctdb_tcp_get_address(ctdb, node->address.address, &sock_out.sin_addr) != 0) {
 		return;
 	}
@@ -138,6 +142,10 @@
 	 * the remote side is actually routable in case CTDB traffic will run on
 	 * a dedicated non-routeable network.
 	 */
+	ZERO_STRUCT(sock_in);
+#ifdef HAVE_SOCK_SIN_LEN
+	sock_in.sin_len = sizeof(sock_in);
+#endif
 	if (ctdb_tcp_get_address(ctdb, ctdb->address.address, &sock_in.sin_addr) != 0) {
 		return;
 	}
@@ -239,6 +247,10 @@
 	}
 
 	for (i=0;i<ctdb->num_nodes;i++) {
+		ZERO_STRUCT(sock);
+#ifdef HAVE_SOCK_SIN_LEN
+		sock.sin_len = sizeof(sock);
+#endif
 		sock.sin_port = htons(ctdb->nodes[i]->address.port);
 		sock.sin_family = PF_INET;
 		if (ctdb_tcp_get_address(ctdb, ctdb->nodes[i]->address.address, 
@@ -309,6 +321,10 @@
 		return ctdb_tcp_listen_automatic(ctdb);
 	}
 
+	ZERO_STRUCT(sock);
+#ifdef HAVE_SOCK_SIN_LEN
+	sock.sin_len = sizeof(sock);
+#endif
 	sock.sin_port = htons(ctdb->address.port);
 	sock.sin_family = PF_INET;
 	



More information about the samba-cvs mailing list