| Index: ppapi/shared_impl/private/net_address_private_impl.cc
|
| diff --git a/ppapi/shared_impl/private/net_address_private_impl.cc b/ppapi/shared_impl/private/net_address_private_impl.cc
|
| index b3fb3f6d973294e51852d10803f544bedd0ca137..3b08977276e38c484236cb01b73238f945637e1a 100644
|
| --- a/ppapi/shared_impl/private/net_address_private_impl.cc
|
| +++ b/ppapi/shared_impl/private/net_address_private_impl.cc
|
| @@ -332,29 +332,11 @@ std::string ConvertIPv6AddressToString(const sockaddr_in6* a,
|
| PP_Var Describe(PP_Module /*module*/,
|
| const struct PP_NetAddress_Private* addr,
|
| PP_Bool include_port) {
|
| - if (!NetAddressPrivateImpl::ValidateNetAddress(*addr))
|
| + std::string str =
|
| + NetAddressPrivateImpl::DescribeNetAddress(*addr, !!include_port);
|
| + if (str.empty())
|
| return PP_MakeUndefined();
|
| -
|
| - // On Windows, |NetAddressToString()| doesn't work in the sandbox. On Mac,
|
| - // the output isn't consistent with RFC 5952, at least on Mac OS 10.6:
|
| - // |getnameinfo()| collapses length-one runs of zeros (and also doesn't
|
| - // display the scope).
|
| - switch (GetFamilyInternal(addr)) {
|
| - case AF_INET: {
|
| - const sockaddr_in* a = reinterpret_cast<const sockaddr_in*>(addr->data);
|
| - return StringVar::StringToPPVar(
|
| - ConvertIPv4AddressToString(a, !!include_port));
|
| - }
|
| - case AF_INET6: {
|
| - const sockaddr_in6* a = reinterpret_cast<const sockaddr_in6*>(addr->data);
|
| - return StringVar::StringToPPVar(
|
| - ConvertIPv6AddressToString(a, !!include_port));
|
| - }
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - return PP_MakeUndefined();
|
| + return StringVar::StringToPPVar(str);
|
| }
|
|
|
| PP_Bool ReplacePort(const struct PP_NetAddress_Private* src_addr,
|
| @@ -543,4 +525,31 @@ bool NetAddressPrivateImpl::NetAddressToIPEndPoint(
|
| reinterpret_cast<const sockaddr&>(*net_addr.data), address, port);
|
| }
|
|
|
| +// static
|
| +std::string NetAddressPrivateImpl::DescribeNetAddress(
|
| + const PP_NetAddress_Private& addr,
|
| + bool include_port) {
|
| + if (!NetAddressPrivateImpl::ValidateNetAddress(addr))
|
| + return std::string();
|
| +
|
| + // On Windows, |NetAddressToString()| doesn't work in the sandbox. On Mac,
|
| + // the output isn't consistent with RFC 5952, at least on Mac OS 10.6:
|
| + // |getnameinfo()| collapses length-one runs of zeros (and also doesn't
|
| + // display the scope).
|
| + switch (GetFamilyInternal(&addr)) {
|
| + case AF_INET: {
|
| + const sockaddr_in* a = reinterpret_cast<const sockaddr_in*>(&addr.data);
|
| + return ConvertIPv4AddressToString(a, include_port);
|
| + }
|
| + case AF_INET6: {
|
| + const sockaddr_in6* a = reinterpret_cast<const sockaddr_in6*>(&addr.data);
|
| + return ConvertIPv6AddressToString(a, include_port);
|
| + }
|
| + default:
|
| + NOTREACHED();
|
| + break;
|
| + }
|
| + return std::string();
|
| +}
|
| +
|
| } // namespace ppapi
|
|
|