| Index: runtime/bin/socket_linux.cc
|
| diff --git a/runtime/bin/socket_linux.cc b/runtime/bin/socket_linux.cc
|
| index 63fd9c30b9a78cd80e5dc017f73c9249d13dc4b9..72a6330867fe4926700ee9bf87ef9e886ee4c15a 100644
|
| --- a/runtime/bin/socket_linux.cc
|
| +++ b/runtime/bin/socket_linux.cc
|
| @@ -26,10 +26,19 @@ namespace bin {
|
| SocketAddress::SocketAddress(struct sockaddr* sockaddr) {
|
| ASSERT(INET6_ADDRSTRLEN >= INET_ADDRSTRLEN);
|
| RawAddr* raw = reinterpret_cast<RawAddr*>(sockaddr);
|
| - const char* result = inet_ntop(sockaddr->sa_family,
|
| - &raw->in.sin_addr,
|
| - as_string_,
|
| - INET6_ADDRSTRLEN);
|
| + const char* result;
|
| + if (sockaddr->sa_family == AF_INET) {
|
| + result = inet_ntop(sockaddr->sa_family,
|
| + &raw->in.sin_addr,
|
| + as_string_,
|
| + INET_ADDRSTRLEN);
|
| + } else {
|
| + ASSERT(sockaddr->sa_family == AF_INET6);
|
| + result = inet_ntop(sockaddr->sa_family,
|
| + &raw->in6.sin6_addr,
|
| + as_string_,
|
| + INET6_ADDRSTRLEN);
|
| + }
|
| if (result == NULL) as_string_[0] = 0;
|
| memmove(reinterpret_cast<void *>(&addr_),
|
| sockaddr,
|
|
|