HTTPCLIENT-1317 InetAddressUtils should handle IPv6 Addresses with Embedded IPv4 Addresses
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1444926 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b95f92e1bc
commit
4146dd8c58
|
@ -1,5 +1,7 @@
|
|||
Changes since 4.3 ALPHA1
|
||||
-------------------
|
||||
* [HTTPCLIENT-1317] InetAddressUtils should handle IPv6 Addresses with Embedded IPv4 Addresses
|
||||
Contributed Sebastian Bazley <sebb at apache.org>.
|
||||
|
||||
* [HTTPCLIENT-1320] SSLSocketFactory#createSystemSSLContext causes UnrecoverableKeyException
|
||||
'Password verification failed' when a truststore is specified with 'javax.net.ssl.trustStore'
|
||||
|
|
|
@ -42,9 +42,14 @@ public class InetAddressUtils {
|
|||
private InetAddressUtils() {
|
||||
}
|
||||
|
||||
private static final String IPV4_BASIC_PATTERN_STRING =
|
||||
"(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])";
|
||||
|
||||
private static final Pattern IPV4_PATTERN =
|
||||
Pattern.compile(
|
||||
"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
|
||||
Pattern.compile("^" + IPV4_BASIC_PATTERN_STRING + "$");
|
||||
|
||||
private static final Pattern IPV4_MAPPED_IPV6_PATTERN = // TODO does not allow for redundant leading zeros
|
||||
Pattern.compile("^::[fF]{4}:" + IPV4_BASIC_PATTERN_STRING + "$");
|
||||
|
||||
private static final Pattern IPV6_STD_PATTERN =
|
||||
Pattern.compile(
|
||||
|
@ -58,6 +63,10 @@ public class InetAddressUtils {
|
|||
return IPV4_PATTERN.matcher(input).matches();
|
||||
}
|
||||
|
||||
public static boolean isIPv4MappedIPv64Address(final String input) {
|
||||
return IPV4_MAPPED_IPV6_PATTERN.matcher(input).matches();
|
||||
}
|
||||
|
||||
public static boolean isIPv6StdAddress(final String input) {
|
||||
return IPV6_STD_PATTERN.matcher(input).matches();
|
||||
}
|
||||
|
|
|
@ -79,4 +79,16 @@ public class TestInetAddressUtils {
|
|||
Assert.assertFalse(InetAddressUtils.isIPv6HexCompressedAddress("1::2:3:4:5:6:7:8")); // too many fields
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidIPv4MappedIPv6Address() {
|
||||
Assert.assertTrue(InetAddressUtils.isIPv4MappedIPv64Address("::FFFF:1.2.3.4"));
|
||||
Assert.assertTrue(InetAddressUtils.isIPv4MappedIPv64Address("::ffff:255.255.255.255"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInValidIPv4MappedIPv6Address() {
|
||||
Assert.assertFalse(InetAddressUtils.isIPv4MappedIPv64Address("2001:0db8:0000:0000:0000:0000:1428:57ab"));
|
||||
Assert.assertFalse(InetAddressUtils.isIPv4MappedIPv64Address("::ffff:1:2:3:4"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue