| Index: runtime/bin/socket_fuchsia.cc | 
| diff --git a/runtime/bin/socket_fuchsia.cc b/runtime/bin/socket_fuchsia.cc | 
| index a6498ce1b593a0eb528681870a27865024c58a21..0109bea3290686af5a68a6f63b8f62c2d13ac186 100644 | 
| --- a/runtime/bin/socket_fuchsia.cc | 
| +++ b/runtime/bin/socket_fuchsia.cc | 
| @@ -242,9 +242,14 @@ intptr_t Socket::GetPort(intptr_t fd) { | 
|  | 
|  | 
| SocketAddress* Socket::GetRemotePeer(intptr_t fd, intptr_t* port) { | 
| -  LOG_ERR("Socket::GetRemotePeer is unimplemented\n"); | 
| -  UNIMPLEMENTED(); | 
| -  return NULL; | 
| +  ASSERT(fd >= 0); | 
| +  RawAddr raw; | 
| +  socklen_t size = sizeof(raw); | 
| +  if (NO_RETRY_EXPECTED(getpeername(fd, &raw.addr, &size))) { | 
| +    return NULL; | 
| +  } | 
| +  *port = SocketAddress::GetAddrPort(raw); | 
| +  return new SocketAddress(&raw.addr); | 
| } | 
|  | 
|  | 
| @@ -324,9 +329,15 @@ bool Socket::ReverseLookup(const RawAddr& addr, | 
|  | 
|  | 
| bool Socket::ParseAddress(int type, const char* address, RawAddr* addr) { | 
| -  LOG_ERR("Socket::ParseAddress is unimplemented\n"); | 
| -  UNIMPLEMENTED(); | 
| -  return false; | 
| +  int result; | 
| +  if (type == SocketAddress::TYPE_IPV4) { | 
| +    result = NO_RETRY_EXPECTED(inet_pton(AF_INET, address, &addr->in.sin_addr)); | 
| +  } else { | 
| +    ASSERT(type == SocketAddress::TYPE_IPV6); | 
| +    result = | 
| +        NO_RETRY_EXPECTED(inet_pton(AF_INET6, address, &addr->in6.sin6_addr)); | 
| +  } | 
| +  return (result == 1); | 
| } | 
|  | 
|  | 
| @@ -478,10 +489,15 @@ bool Socket::GetNoDelay(intptr_t fd, bool* enabled) { | 
|  | 
|  | 
| bool Socket::SetNoDelay(intptr_t fd, bool enabled) { | 
| +// TODO(US-94): Enable. | 
| +#if 0 | 
| int on = enabled ? 1 : 0; | 
| return NO_RETRY_EXPECTED(setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, | 
| reinterpret_cast<char*>(&on), | 
| sizeof(on))) == 0; | 
| +#else | 
| +  return true; | 
| +#endif | 
| } | 
|  | 
|  | 
|  |