diff options
author | ericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-18 08:02:08 +0000 |
---|---|---|
committer | ericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-18 08:02:08 +0000 |
commit | 40f153572764e76066588fd2e358d05b8fa453bb (patch) | |
tree | 9c8bf3de47da4fac879d1035addf2a6780f163e4 /net/base/address_list.cc | |
parent | a2c2fb9ff48cd37dbed258dca5b40461c92b71a8 (diff) | |
download | chromium_src-40f153572764e76066588fd2e358d05b8fa453bb.zip chromium_src-40f153572764e76066588fd2e358d05b8fa453bb.tar.gz chromium_src-40f153572764e76066588fd2e358d05b8fa453bb.tar.bz2 |
Use manually constructed IPv6 socket addresses for tests, rather than system created ones.
The advantage is that GURL's parsing of IPv6 addresses works on all systems, whereas getaddrinfo(ipv6_literal) only succeeds on IPv6 enabled systems.
This allows the tests to run consistently on all systems, including our own WinXP buildbots (which do not support IPv6).
BUG=http://crbug.com/16452
TEST=[net_unittests] SOCKS5ClientSocketTest.IPv6Domain, SOCKSClientSocketTest.SOCKS4AIfDomainInIPv6
Review URL: http://codereview.chromium.org/155618
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21053 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/address_list.cc')
-rw-r--r-- | net/base/address_list.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/net/base/address_list.cc b/net/base/address_list.cc index 9fc8d32..7cfab3f 100644 --- a/net/base/address_list.cc +++ b/net/base/address_list.cc @@ -127,6 +127,25 @@ void AddressList::Reset() { data_ = NULL; } +// static +AddressList AddressList::CreateIPv6Address(unsigned char data[16]) { + struct addrinfo* ai = new struct addrinfo; + memset(ai, 0, sizeof(struct addrinfo)); + + ai->ai_family = AF_INET6; + ai->ai_socktype = SOCK_STREAM; + ai->ai_addrlen = sizeof(sockaddr_in6); + + struct sockaddr_in6* addr6 = new sockaddr_in6; + memset(addr6, 0, sizeof(sockaddr_in6)); + + ai->ai_addr = reinterpret_cast<sockaddr*>(addr6); + addr6->sin6_family = AF_INET6; + memcpy(&addr6->sin6_addr, data, 16); + + return AddressList(new Data(ai, false /*is_system_created*/)); +} + AddressList::Data::~Data() { // Call either freeaddrinfo(head), or FreeMyAddrinfo(head), depending who // created the data. |