[haiku-commits] r37804 - in haiku/trunk/src/add-ons/kernel/network/protocols: ipv4 ipv6 l2cap unix

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 29 Jul 2010 11:33:45 +0200 (CEST)

Author: axeld
Date: 2010-07-29 11:33:45 +0200 (Thu, 29 Jul 2010)
New Revision: 37804
Changeset: http://dev.haiku-os.org/changeset/37804

Modified:
   haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4_address.cpp
   haiku/trunk/src/add-ons/kernel/network/protocols/ipv6/ipv6_address.cpp
   haiku/trunk/src/add-ons/kernel/network/protocols/l2cap/l2cap_address.cpp
   haiku/trunk/src/add-ons/kernel/network/protocols/unix/UnixAddress.cpp
Log:
* Made sure is_empty_address() also detects AF_UNSPEC addresses as empty.
* The is_empty_address() function of AF_UNIX did not deal correctly with empty
  addresses.


Modified: haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4_address.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4_address.cpp      
2010-07-29 09:28:54 UTC (rev 37803)
+++ haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4_address.cpp      
2010-07-29 09:33:45 UTC (rev 37804)
@@ -100,7 +100,8 @@
 static bool
 ipv4_is_empty_address(const sockaddr *address, bool checkPort)
 {
-       if (address == NULL || address->sa_len == 0)
+       if (address == NULL || address->sa_len == 0
+               || address->sa_family == AF_UNSPEC)
                return true;
 
        return ((sockaddr_in *)address)->sin_addr.s_addr == 0

Modified: haiku/trunk/src/add-ons/kernel/network/protocols/ipv6/ipv6_address.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/network/protocols/ipv6/ipv6_address.cpp      
2010-07-29 09:28:54 UTC (rev 37803)
+++ haiku/trunk/src/add-ons/kernel/network/protocols/ipv6/ipv6_address.cpp      
2010-07-29 09:33:45 UTC (rev 37804)
@@ -113,7 +113,8 @@
 static bool
 ipv6_is_empty_address(const sockaddr *_address, bool checkPort)
 {
-       if (_address == NULL || _address->sa_len == 0)
+       if (_address == NULL || _address->sa_len == 0
+               || _address->sa_family == AF_UNSPEC)
                return true;
 
        const sockaddr_in6 *address = (const sockaddr_in6 *)_address;

Modified: 
haiku/trunk/src/add-ons/kernel/network/protocols/l2cap/l2cap_address.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/network/protocols/l2cap/l2cap_address.cpp    
2010-07-29 09:28:54 UTC (rev 37803)
+++ haiku/trunk/src/add-ons/kernel/network/protocols/l2cap/l2cap_address.cpp    
2010-07-29 09:33:45 UTC (rev 37804)
@@ -90,7 +90,8 @@
 static bool
 l2cap_is_empty_address(const sockaddr *address, bool checkPort)
 {
-       if (address == NULL || address->sa_len == 0)
+       if (address == NULL || address->sa_len == 0
+               || address->sa_family == AF_UNSPEC)
                return true;
 
        return ((bdaddrUtils::Compare(

Modified: haiku/trunk/src/add-ons/kernel/network/protocols/unix/UnixAddress.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/network/protocols/unix/UnixAddress.cpp       
2010-07-29 09:28:54 UTC (rev 37803)
+++ haiku/trunk/src/add-ons/kernel/network/protocols/unix/UnixAddress.cpp       
2010-07-29 09:33:45 UTC (rev 37804)
@@ -108,10 +108,13 @@
 static bool
 unix_is_empty_address(const sockaddr *address, bool checkPort)
 {
-       return address->sa_len >= kEmptyAddress.sun_len
-               && memcmp(address, &kEmptyAddress, kEmptyAddress.sun_len) == 0;
+       return address == NULL || address->sa_len == 0
+               || address->sa_family == AF_UNSPEC)
+               || (address->sa_len >= kEmptyAddress.sun_len
+                       && memcmp(address, &kEmptyAddress, 
kEmptyAddress.sun_len) == 0);
 }
 
+
 static bool
 unix_is_same_family(const sockaddr *address)
 {
@@ -121,6 +124,7 @@
        return address->sa_family == AF_UNIX;
 }
 
+
 static int32
 unix_first_mask_bit(const sockaddr *mask)
 {


Other related posts:

  • » [haiku-commits] r37804 - in haiku/trunk/src/add-ons/kernel/network/protocols: ipv4 ipv6 l2cap unix - axeld