[SCM] Socket Wrapper Repository - branch master updated

Andreas Schneider asn at samba.org
Tue Jan 21 01:35:15 MST 2014


The branch, master has been updated
       via  d7e31ed src: Fix build on Solaris.
       via  ff36996 cmake: Check for HAVE_STRUCT_MSGHDR_MSG_CONTROL.
       via  803820f cmake: Fix HAVE_STRUCT_SOCKADDR_SA_LEN detection.
       via  7f5ead0 src: Fix build warnings on FreeBSD.
      from  980a30d cmake: Add cmake config version script.

http://gitweb.samba.org/?p=socket_wrapper.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit d7e31eddf4016eb3e12151d93d0372e5a7aabef3
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Jan 21 09:34:55 2014 +0100

    src: Fix build on Solaris.

commit ff36996f62e7dc9e713ceab823d7d19d8cd396a8
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Jan 21 09:27:03 2014 +0100

    cmake: Check for HAVE_STRUCT_MSGHDR_MSG_CONTROL.

commit 803820ffe778be5af68957bc46532e7c50243c9f
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Jan 21 09:26:44 2014 +0100

    cmake: Fix HAVE_STRUCT_SOCKADDR_SA_LEN detection.

commit 7f5ead0210c1b02f81dc16c627893502e7aabb71
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Jan 21 09:17:01 2014 +0100

    src: Fix build warnings on FreeBSD.

-----------------------------------------------------------------------

Summary of changes:
 ConfigureChecks.cmake |    3 +-
 config.h.cmake        |    5 +++
 src/socket_wrapper.c  |   66 +++++++++++++++++++++++++++++-------------------
 3 files changed, 47 insertions(+), 27 deletions(-)


Changeset truncated at 500 lines:

diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 995f8ce..2d8e690 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -82,7 +82,8 @@ endif (UNIX)
 set(SWRAP_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} CACHE INTERNAL "socket_wrapper required system libraries")
 
 # STRUCT MEMBERS
-check_struct_has_member("struct sockaddr" sa_len "sys/socket.h netinet/in.h" HAVE_STRUCT_SOCKADDR_SA_LEN)
+check_struct_has_member("struct sockaddr" sa_len "sys/types.h;sys/socket.h;netinet/in.h" HAVE_STRUCT_SOCKADDR_SA_LEN)
+check_struct_has_member("struct msghdr" msg_control "sys/types.h;sys/socket.h" HAVE_STRUCT_MSGHDR_MSG_CONTROL)
 
 # PROTOTYPES
 check_prototype_definition(gettimeofday
diff --git a/config.h.cmake b/config.h.cmake
index 4f912bd..63bbdb4 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -16,6 +16,10 @@
 
 #cmakedefine HAVE_SYS_FILIO_H 1
 
+/************************ STRUCT MEMBERS *************************/
+
+#cmakedefine HAVE_STRUCT_SOCKADDR_SA_LEN 1
+#cmakedefine HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
 
 /*************************** FUNCTIONS ***************************/
 
@@ -30,6 +34,7 @@
 #cmakedefine HAVE_GETTIMEOFDAY_TZ_VOID 1
 
 /*************************** DATA TYPES***************************/
+
 #cmakedefine SIZEOF_PID_T @SIZEOF_PID_T@
 
 /**************************** OPTIONS ****************************/
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index b85021a..205d457 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -2668,7 +2668,7 @@ static ssize_t swrap_sendmsg_before(int fd,
 			break;
 		}
 
-		for (i=0; i < msg->msg_iovlen; i++) {
+		for (i = 0; i < (size_t)msg->msg_iovlen; i++) {
 			size_t nlen;
 			nlen = len + msg->msg_iov[i].iov_len;
 			if (nlen > SOCKET_MAX_PACKET) {
@@ -2767,7 +2767,7 @@ static void swrap_sendmsg_after(struct socket_info *si,
 		saved_errno = EHOSTUNREACH;
 	}
 
-	for (i=0; i < msg->msg_iovlen; i++) {
+	for (i = 0; i < (size_t)msg->msg_iovlen; i++) {
 		avail += msg->msg_iov[i].iov_len;
 	}
 
@@ -2785,7 +2785,7 @@ static void swrap_sendmsg_after(struct socket_info *si,
 		return;
 	}
 
-	for (i=0; i < msg->msg_iovlen; i++) {
+	for (i = 0; i < (size_t)msg->msg_iovlen; i++) {
 		size_t this_time = MIN(remain, msg->msg_iov[i].iov_len);
 		memcpy(buf + ofs,
 		       msg->msg_iov[i].iov_base,
@@ -2843,7 +2843,7 @@ static int swrap_recvmsg_before(int fd,
 			break;
 		}
 
-		for (i=0; i < msg->msg_iovlen; i++) {
+		for (i = 0; i < (size_t)msg->msg_iovlen; i++) {
 			size_t nlen;
 			nlen = len + msg->msg_iov[i].iov_len;
 			if (nlen > SOCKET_MAX_PACKET) {
@@ -2902,7 +2902,7 @@ static int swrap_recvmsg_after(struct socket_info *si,
 		saved_errno = EHOSTUNREACH;
 	}
 
-	for (i=0; i < msg->msg_iovlen; i++) {
+	for (i = 0; i < (size_t)msg->msg_iovlen; i++) {
 		avail += msg->msg_iov[i].iov_len;
 	}
 
@@ -2925,7 +2925,7 @@ static int swrap_recvmsg_after(struct socket_info *si,
 		return -1;
 	}
 
-	for (i=0; i < msg->msg_iovlen; i++) {
+	for (i = 0; i < (size_t)msg->msg_iovlen; i++) {
 		size_t this_time = MIN(remain, msg->msg_iov[i].iov_len);
 		memcpy(buf + ofs,
 		       msg->msg_iov[i].iov_base,
@@ -3010,6 +3010,10 @@ static ssize_t swrap_recvfrom(int s, void *buf, size_t len, int flags,
 				     fromlen);
 	}
 
+	tmp.iov_base = buf;
+	tmp.iov_len = len;
+
+	ZERO_STRUCT(msg);
 	if (from != NULL && fromlen != NULL) {
 		msg.msg_name = from;   /* optional address */
 		msg.msg_namelen = *fromlen; /* size of address */
@@ -3017,15 +3021,13 @@ static ssize_t swrap_recvfrom(int s, void *buf, size_t len, int flags,
 		msg.msg_name = (struct sockaddr *)(void *)&ss; /* optional address */
 		msg.msg_namelen = ss_len; /* size of address */
 	}
-
-	tmp.iov_base = buf;
-	tmp.iov_len = len;
-
 	msg.msg_iov = &tmp;            /* scatter/gather array */
 	msg.msg_iovlen = 1;            /* # elements in msg_iov */
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = NULL;        /* ancillary data, see below */
 	msg.msg_controllen = 0;        /* ancillary data buffer len */
 	msg.msg_flags = 0;             /* flags on received message */
+#endif
 
 	tret = swrap_recvmsg_before(s, si, &msg, &tmp);
 	if (tret == -1) {
@@ -3101,7 +3103,7 @@ static ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags,
 	msg.msg_namelen = tolen;       /* size of address */
 	msg.msg_iov = &tmp;            /* scatter/gather array */
 	msg.msg_iovlen = 1;            /* # elements in msg_iov */
-#if 0 /* not available on solaris */
+#if HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = NULL;        /* ancillary data, see below */
 	msg.msg_controllen = 0;        /* ancillary data buffer len */
 	msg.msg_flags = 0;             /* flags on received message */
@@ -3180,13 +3182,16 @@ static ssize_t swrap_recv(int s, void *buf, size_t len, int flags)
 	tmp.iov_base = buf;
 	tmp.iov_len = len;
 
+	ZERO_STRUCT(msg);
 	msg.msg_name = (struct sockaddr *)(void *)&ss; /* optional address */
 	msg.msg_namelen = ss_len;      /* size of address */
 	msg.msg_iov = &tmp;            /* scatter/gather array */
 	msg.msg_iovlen = 1;            /* # elements in msg_iov */
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = NULL;        /* ancillary data, see below */
 	msg.msg_controllen = 0;        /* ancillary data buffer len */
 	msg.msg_flags = 0;             /* flags on received message */
+#endif
 
 	tret = swrap_recvmsg_before(s, si, &msg, &tmp);
 	if (tret == -1) {
@@ -3234,13 +3239,16 @@ static ssize_t swrap_read(int s, void *buf, size_t len)
 	tmp.iov_base = buf;
 	tmp.iov_len = len;
 
+	ZERO_STRUCT(msg);
 	msg.msg_name = (struct sockaddr *)(void *)&ss; /* optional address */
 	msg.msg_namelen = ss_len;      /* size of address */
 	msg.msg_iov = &tmp;            /* scatter/gather array */
 	msg.msg_iovlen = 1;            /* # elements in msg_iov */
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = NULL;        /* ancillary data, see below */
 	msg.msg_controllen = 0;        /* ancillary data buffer len */
 	msg.msg_flags = 0;             /* flags on received message */
+#endif
 
 	tret = swrap_recvmsg_before(s, si, &msg, &tmp);
 	if (tret == -1) {
@@ -3290,7 +3298,7 @@ static ssize_t swrap_send(int s, const void *buf, size_t len, int flags)
 	msg.msg_namelen = 0;           /* size of address */
 	msg.msg_iov = &tmp;            /* scatter/gather array */
 	msg.msg_iovlen = 1;            /* # elements in msg_iov */
-#if 0 /* not available on solaris */
+#if HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = NULL;        /* ancillary data, see below */
 	msg.msg_controllen = 0;        /* ancillary data buffer len */
 	msg.msg_flags = 0;             /* flags on received message */
@@ -3339,12 +3347,19 @@ static ssize_t swrap_recvmsg(int s, struct msghdr *omsg, int flags)
 		return -1;
 	}
 
-	msg = *omsg;
-	tmp.iov_base = msg.msg_iov;
-	tmp.iov_len = msg.msg_iovlen;
+	ZERO_STRUCT(msg);
+	msg.msg_name = (struct sockaddr *)&from_addr; /* optional address */
+	msg.msg_namelen = from_addrlen;            /* size of address */
+	msg.msg_iov = omsg->msg_iov;               /* scatter/gather array */
+	msg.msg_iovlen = omsg->msg_iovlen;         /* # elements in msg_iov */
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
+	msg.msg_control = omsg->msg_control;       /* ancillary data, see below */
+	msg.msg_controllen = omsg->msg_controllen; /* ancillary data buffer len */
+	msg.msg_flags = omsg->msg_flags;           /* flags on received message */
+#endif
 
-	msg.msg_name = (struct sockaddr *)&from_addr;
-	msg.msg_namelen = from_addrlen;
+	tmp.iov_base = omsg->msg_iov;
+	tmp.iov_len = omsg->msg_iovlen;
 
 	ret = libc_recvmsg(s, &msg, flags);
 
@@ -3380,21 +3395,20 @@ static ssize_t swrap_sendmsg(int s, const struct msghdr *omsg, int flags)
 		return libc_sendmsg(s, omsg, flags);
 	}
 
-	tmp.iov_base = NULL;
-	tmp.iov_len = 0;
-
-	msg = *omsg;
-#if 0
+	ZERO_STRUCT(msg);
 	msg.msg_name = omsg->msg_name;             /* optional address */
 	msg.msg_namelen = omsg->msg_namelen;       /* size of address */
 	msg.msg_iov = omsg->msg_iov;               /* scatter/gather array */
 	msg.msg_iovlen = omsg->msg_iovlen;         /* # elements in msg_iov */
-	/* the following is not available on solaris */
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = omsg->msg_control;       /* ancillary data, see below */
 	msg.msg_controllen = omsg->msg_controllen; /* ancillary data buffer len */
 	msg.msg_flags = omsg->msg_flags;           /* flags on received message */
 #endif
 
+	tmp.iov_base = omsg->msg_iov;
+	tmp.iov_len = omsg->msg_iovlen;
+
 	ret = swrap_sendmsg_before(s, si, &msg, &tmp, &un_addr, &to_un, &to, &bcast);
 	if (ret == -1) return -1;
 
@@ -3409,7 +3423,7 @@ static ssize_t swrap_sendmsg(int s, const struct msghdr *omsg, int flags)
 		size_t avail = 0;
 		size_t remain;
 
-		for (i=0; i < msg.msg_iovlen; i++) {
+		for (i = 0; i < (size_t)msg.msg_iovlen; i++) {
 			avail += msg.msg_iov[i].iov_len;
 		}
 
@@ -3422,7 +3436,7 @@ static ssize_t swrap_sendmsg(int s, const struct msghdr *omsg, int flags)
 			return -1;
 		}
 
-		for (i=0; i < msg.msg_iovlen; i++) {
+		for (i = 0; i < (size_t)msg.msg_iovlen; i++) {
 			size_t this_time = MIN(remain, msg.msg_iov[i].iov_len);
 			memcpy(buf + ofs,
 			       msg.msg_iov[i].iov_base,
@@ -3566,7 +3580,7 @@ static ssize_t swrap_writev(int s, const struct iovec *vector, int count)
 	msg.msg_namelen = 0;           /* size of address */
 	msg.msg_iov = discard_const_p(struct iovec, vector); /* scatter/gather array */
 	msg.msg_iovlen = count;        /* # elements in msg_iov */
-#if 0 /* not available on solaris */
+#if HAVE_STRUCT_MSGHDR_MSG_CONTROL
 	msg.msg_control = NULL;        /* ancillary data, see below */
 	msg.msg_controllen = 0;        /* ancillary data buffer len */
 	msg.msg_flags = 0;             /* flags on received message */


-- 
Socket Wrapper Repository


More information about the samba-cvs mailing list