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