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 { |