| Index: dart/runtime/bin/socket.cc
|
| ===================================================================
|
| --- dart/runtime/bin/socket.cc (revision 29908)
|
| +++ dart/runtime/bin/socket.cc (working copy)
|
| @@ -235,13 +235,24 @@
|
| 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_NewTypedData(Dart_TypedData_kUint8, data_length);
|
| + 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);
|
| + delete addr;
|
| } else {
|
| Dart_SetReturnValue(args, DartUtils::NewDartOSError());
|
| }
|
|
|