Revision
15318
Author
anthm
Date
2009-11-02 10:46:47 -0600 (Mon, 02 Nov 2009)

Log Message

last ipv6 change not quite right, should not change any behaviour

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_utils.c (15317 => 15318)


--- freeswitch/trunk/src/switch_utils.c	2009-11-02 15:41:01 UTC (rev 15317)
+++ freeswitch/trunk/src/switch_utils.c	2009-11-02 16:46:47 UTC (rev 15318)
@@ -1345,7 +1345,6 @@
 	return ntohs((unsigned short)s->sin_addr.s_addr);
 }
 
-
 SWITCH_DECLARE(int) switch_cmp_addr(switch_sockaddr_t *sa1, switch_sockaddr_t *sa2)
 {
 	struct sockaddr_in *s1;
@@ -1374,8 +1373,17 @@
 	case AF_INET:
 		return (s1->sin_addr.s_addr == s2->sin_addr.s_addr && s1->sin_port == s2->sin_port);	
 	case AF_INET6:
-		return (s16->sin6_addr.s6_addr && s26->sin6_addr.s6_addr &&
-				*s16->sin6_addr.s6_addr == *s26->sin6_addr.s6_addr && s16->sin6_port == s26->sin6_port);	
+		if (s16->sin6_addr.s6_addr && s26->sin6_addr.s6_addr) {
+			int i;
+
+			if (s16->sin6_port != s26->sin6_port) return 0;
+
+			for(i = 0; i < 4; i++) {
+				if (*((int32_t *)s16->sin6_addr.s6_addr + i) != *((int32_t *)s26->sin6_addr.s6_addr + i)) return 0;
+			}
+
+			return 1;
+		}
 	}
 	
 	return 0;