Chromium Code Reviews| Index: runtime/bin/socket.cc |
| diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc |
| index 4dfbe503fa750f586c45091acb6e6cc59950c660..489f8218db945c99d2a548ce5f067680743ae064 100644 |
| --- a/runtime/bin/socket.cc |
| +++ b/runtime/bin/socket.cc |
| @@ -235,11 +235,21 @@ void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) { |
| if (Dart_IsError(err)) Dart_PropagateError(err); |
| OSError os_error; |
| intptr_t port = 0; |
| - ASSERT(INET6_ADDRSTRLEN >= INET_ADDRSTRLEN); |
| - char host[INET6_ADDRSTRLEN]; |
| - if (Socket::GetRemotePeer(socket, host, &port)) { |
| + SocketAddress* addr = Socket::GetRemotePeer(socket, &port); |
| + if (addr != NULL) { |
| Dart_Handle list = Dart_NewList(2); |
| - Dart_ListSetAt(list, 0, Dart_NewStringFromCString(host)); |
| + |
| + Dart_Handle entry = Dart_NewList(3); |
| + Dart_ListSetAt(entry, 0, Dart_NewInteger(addr->GetType())); |
| + Dart_ListSetAt(entry, 1, Dart_NewStringFromCString(addr->as_string())); |
| + |
| + RawAddr raw = addr->addr(); |
| + intptr_t data_length = SocketAddress::GetAddrLength(&raw); |
| + Dart_Handle data = Dart_NewList(data_length); |
|
Søren Gjesse
2013/11/05 13:14:05
typed data UInt8List?
Anders Johnsen
2013/11/05 13:19:44
Done.
|
| + Dart_ListSetAsBytes(data, 0, reinterpret_cast<uint8_t*>(&raw), data_length); |
| + Dart_ListSetAt(entry, 2, data); |
| + |
| + Dart_ListSetAt(list, 0, entry); |
| Dart_ListSetAt(list, 1, Dart_NewInteger(port)); |
| Dart_SetReturnValue(args, list); |
|
Søren Gjesse
2013/11/05 13:14:05
delete addr?
Anders Johnsen
2013/11/05 13:19:44
Done.
|
| } else { |