Jelajahi Sumber

2005-06-03 Gonzalo Paniagua Javier <[email protected]>

	* IPv6Address.cs: fix IsLoopback. Closes bug #75128.


svn path=/trunk/mcs/; revision=45369
Gonzalo Paniagua Javier 20 tahun lalu
induk
melakukan
ee407642d3

+ 4 - 0
mcs/class/System/System.Net/ChangeLog

@@ -1,3 +1,7 @@
+2005-06-03 Gonzalo Paniagua Javier <[email protected]>
+
+	* IPv6Address.cs: fix IsLoopback. Closes bug #75128.
+
 2005-06-03 Gonzalo Paniagua Javier <[email protected]>
 
 	* IPv6Address.cs: don't do extra check on ipv4 if this is a ipv6

+ 20 - 18
mcs/class/System/System.Net/IPv6Address.cs

@@ -232,24 +232,26 @@ namespace System.Net {
 		public AddressFamily AddressFamily {
 			get { return AddressFamily.InterNetworkV6; }
 		}
-		
-		/// <summary>
-		///   Used to tell whether the given address is the loopback address.
-		/// </summary>
-		public static bool IsLoopback (IPv6Address addr)
-		{
-			for (int i = 0; i < 4; i++)
-				if (addr.address [i] != 0)
-					return false;
-			if ((addr.address [5] != 0) && (addr.address [5] != 0xffff))
-				return false;
-			if ((addr.address [6] >> 8) == 0x7f)
-				return true;
-			return ((addr.address [5] == 0) && 
-			        (addr.address [6] == 0) && 
-			        (addr.address [7] == 1));
-		}
-		
+
+		public static bool IsLoopback (IPv6Address addr)
+		{
+			if (addr.address [7] != 1)
+				return false;
+
+			int x = addr.address [6] >> 8;
+			if (x != 0x7f && x != 0)
+				return false;
+
+			for (int i = 0; i < 4; i++) {
+				if (addr.address [i] != 0)
+					return false;
+			}
+
+			if (addr.address [5] != 0 && addr.address [5] != 0xffff)
+				return false;
+
+			return true;
+		}
 
 		private static ushort SwapUShort (ushort number)
 		{