svn commit: samba r25411 - in branches/SAMBA_4_0: . source/lib/socket

jelmer at samba.org jelmer at samba.org
Fri Sep 28 18:54:55 GMT 2007


Author: jelmer
Date: 2007-09-28 18:54:55 +0000 (Fri, 28 Sep 2007)
New Revision: 25411

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

Log:
Fix IPv6 socket backend.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/lib/socket/socket_ip.c


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/lib/socket/socket_ip.c
===================================================================
--- branches/SAMBA_4_0/source/lib/socket/socket_ip.c	2007-09-28 18:53:26 UTC (rev 25410)
+++ branches/SAMBA_4_0/source/lib/socket/socket_ip.c	2007-09-28 18:54:55 UTC (rev 25411)
@@ -741,7 +741,7 @@
 	struct sockaddr_in6 *from_addr;
 	socklen_t from_len = sizeof(*from_addr);
 	struct socket_address *src;
-	struct hostent *he;
+	char addrstring[INET6_ADDRSTRLEN];
 	
 	src = talloc(addr_ctx, struct socket_address);
 	if (!src) {
@@ -772,12 +772,13 @@
 
 	src->sockaddrlen = from_len;
 
-	he = gethostbyaddr((void *)&from_addr->sin6_addr, sizeof(from_addr->sin6_addr), AF_INET6);
-	if (he == NULL) {
+	if (inet_ntop(AF_INET6, &from_addr->sin6_addr, addrstring, sizeof(addrstring)) == NULL) {
+		DEBUG(0, ("Unable to convert address to string: %s\n", strerror(errno)));
 		talloc_free(src);
-		return NT_STATUS_INTERNAL_ERROR;
+	    	return NT_STATUS_INTERNAL_ERROR;
 	}
-	src->addr = talloc_strdup(src, he->h_name);
+
+	src->addr = talloc_strdup(src, addrstring);
 	if (src->addr == NULL) {
 		talloc_free(src);
 		return NT_STATUS_NO_MEMORY;
@@ -905,7 +906,7 @@
 	socklen_t len = sizeof(*local_addr);
 	struct socket_address *local;
 	int ret;
-	struct hostent *he;
+	char addrstring[INET6_ADDRSTRLEN];
 	
 	local = talloc(mem_ctx, struct socket_address);
 	if (!local) {
@@ -929,14 +930,15 @@
 
 	local->sockaddrlen = len;
 
-	he = gethostbyaddr((char *)&local_addr->sin6_addr, len, AF_INET6);
-
-	if (!he || !he->h_name) {
+	if (inet_ntop(AF_INET6, &local_addr->sin6_addr, addrstring, 
+		       sizeof(addrstring)) == NULL) {
+		DEBUG(0, ("Unable to convert address to string: %s\n", 
+			  strerror(errno)));
 		talloc_free(local);
 		return NULL;
 	}
 	
-	local->addr = talloc_strdup(mem_ctx, he->h_name);
+	local->addr = talloc_strdup(mem_ctx, addrstring);
 	if (!local->addr) {
 		talloc_free(local);
 		return NULL;



More information about the samba-cvs mailing list