svn commit: samba r18424 - in branches/SAMBA_4_0/source/lib/socket_wrapper: .

metze at samba.org metze at samba.org
Tue Sep 12 14:44:45 GMT 2006


Author: metze
Date: 2006-09-12 14:44:44 +0000 (Tue, 12 Sep 2006)
New Revision: 18424

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18424

Log:
there's no need to allocate a wrapped socket for unix sockets,
also this makes sure the socket file isn't unlinked if using socket
wrapper.

metze
Modified:
   branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c
===================================================================
--- branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c	2006-09-12 09:08:55 UTC (rev 18423)
+++ branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c	2006-09-12 14:44:44 UTC (rev 18424)
@@ -361,9 +361,6 @@
 		} else {
 			return convert_in_un_remote(si, (const struct sockaddr_in *)in_addr, out_addr, bcast);
 		}
-	case AF_UNIX:
-		memcpy(out_addr, in_addr, sizeof(*out_addr));
-		return 0;
 	default:
 		break;
 	}
@@ -405,10 +402,6 @@
 			return -1;
 		}
 		return convert_un_in(in_addr, (struct sockaddr_in *)out_addr, _out_addrlen);
-	case AF_UNIX:
-		memcpy(out_addr, in_addr, out_addrlen);
-		*_out_addrlen = out_addrlen;
-		return 0;
 	default:
 		break;
 	}
@@ -445,6 +438,16 @@
 	if (!socket_wrapper_dir()) {
 		return real_socket(domain, type, protocol);
 	}
+
+	switch (domain) {
+	case AF_INET:
+		break;
+	case AF_UNIX:
+		return real_socket(domain, type, protocol);
+	default:
+		errno = EAFNOSUPPORT;
+		return -1;
+	}
 	
 	fd = real_socket(AF_UNIX, type, 0);
 
@@ -588,7 +591,7 @@
 		return real_connect(s, serv_addr, addrlen);
 	}
 
-	if (si->bound == 0 && si->domain != AF_UNIX) {
+	if (si->bound == 0) {
 		ret = swrap_auto_bind(si);
 		if (ret == -1) return -1;
 	}
@@ -600,10 +603,8 @@
 			   sizeof(struct sockaddr_un));
 
 	/* to give better errors */
-	if (serv_addr->sa_family == AF_INET) {
-		if (ret == -1 && errno == ENOENT) {
-			errno = EHOSTUNREACH;
-		}
+	if (ret == -1 && errno == ENOENT) {
+		errno = EHOSTUNREACH;
 	}
 
 	if (ret == 0) {
@@ -691,8 +692,6 @@
 	} 
 
 	switch (si->domain) {
-	case AF_UNIX:
-		return real_getsockopt(s, level, optname, optval, optlen);
 	default:
 		errno = ENOPROTOOPT;
 		return -1;
@@ -712,8 +711,6 @@
 	}
 
 	switch (si->domain) {
-	case AF_UNIX:
-		return real_setsockopt(s, level, optname, optval, optlen);
 	case AF_INET:
 		return 0;
 	default:
@@ -761,7 +758,7 @@
 		return real_sendto(s, buf, len, flags, to, tolen);
 	}
 
-	if (si->bound == 0 && si->domain != AF_UNIX) {
+	if (si->bound == 0) {
 		ret = swrap_auto_bind(si);
 		if (ret == -1) return -1;
 	}
@@ -794,10 +791,8 @@
 	ret = real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
 
 	/* to give better errors */
-	if (to->sa_family == AF_INET) {
-		if (ret == -1 && errno == ENOENT) {
-			errno = EHOSTUNREACH;
-		}
+	if (ret == -1 && errno == ENOENT) {
+		errno = EHOSTUNREACH;
 	}
 
 	swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len, ret);



More information about the samba-cvs mailing list