summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/proxy/ppapi_messages.h3
-rw-r--r--ppapi/proxy/ppb_udp_socket_private_proxy.cc3
-rw-r--r--ppapi/shared_impl/private/net_address_private_impl.cc33
-rw-r--r--ppapi/shared_impl/private/net_address_private_impl.h4
4 files changed, 29 insertions, 14 deletions
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index cf85b19..13fa736 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -1528,7 +1528,8 @@ IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBUDPSocket_Bind,
IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBUDPSocket_RecvFrom,
uint32 /* socket_id */,
int32_t /* num_bytes */)
-IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBUDPSocket_SendTo,
+IPC_MESSAGE_CONTROL4(PpapiHostMsg_PPBUDPSocket_SendTo,
+ int32 /* routing_id */,
uint32 /* socket_id */,
std::string /* data */,
PP_NetAddress_Private /* net_addr */)
diff --git a/ppapi/proxy/ppb_udp_socket_private_proxy.cc b/ppapi/proxy/ppb_udp_socket_private_proxy.cc
index 9b1184f..b5a6d93 100644
--- a/ppapi/proxy/ppb_udp_socket_private_proxy.cc
+++ b/ppapi/proxy/ppb_udp_socket_private_proxy.cc
@@ -71,7 +71,8 @@ void UDPSocket::SendRecvFrom(int32_t num_bytes) {
void UDPSocket::SendSendTo(const std::string& data,
const PP_NetAddress_Private& addr) {
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SendTo(socket_id_, data, addr));
+ SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SendTo(
+ API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, data, addr));
}
void UDPSocket::SendClose() {
diff --git a/ppapi/shared_impl/private/net_address_private_impl.cc b/ppapi/shared_impl/private/net_address_private_impl.cc
index 6e15410..7a8e375 100644
--- a/ppapi/shared_impl/private/net_address_private_impl.cc
+++ b/ppapi/shared_impl/private/net_address_private_impl.cc
@@ -281,19 +281,11 @@ std::string ConvertIPv6AddressToString(const NetAddress* net_addr,
PP_Var Describe(PP_Module /*module*/,
const struct PP_NetAddress_Private* addr,
PP_Bool include_port) {
- const NetAddress* net_addr = ToNetAddress(addr);
- if (!IsValid(net_addr))
+ std::string str = NetAddressPrivateImpl::DescribeNetAddress(
+ *addr, PP_ToBool(include_port));
+ if (str.empty())
return PP_MakeUndefined();
-
- std::string description;
- if (net_addr->is_ipv6) {
- description = ConvertIPv6AddressToString(net_addr,
- PP_ToBool(include_port));
- } else {
- description = ConvertIPv4AddressToString(net_addr,
- PP_ToBool(include_port));
- }
- return StringVar::StringToPPVar(description);
+ return StringVar::StringToPPVar(str);
}
PP_Bool ReplacePort(const struct PP_NetAddress_Private* src_addr,
@@ -498,4 +490,21 @@ bool NetAddressPrivateImpl::NetAddressToIPEndPoint(
}
#endif // !defined(OS_NACL)
+// static
+std::string NetAddressPrivateImpl::DescribeNetAddress(
+ const PP_NetAddress_Private& addr,
+ bool include_port) {
+ const NetAddress* net_addr = ToNetAddress(&addr);
+ if (!IsValid(net_addr))
+ return std::string();
+
+ // On Windows, |NetAddressToString()| doesn't work in the sandbox. On Mac,
+ // the output isn't consistent with RFC 5952, at least on Mac OS 10.6:
+ // |getnameinfo()| collapses length-one runs of zeros (and also doesn't
+ // display the scope).
+ if (net_addr->is_ipv6)
+ return ConvertIPv6AddressToString(net_addr, include_port);
+ return ConvertIPv4AddressToString(net_addr, include_port);
+}
+
} // namespace ppapi
diff --git a/ppapi/shared_impl/private/net_address_private_impl.h b/ppapi/shared_impl/private/net_address_private_impl.h
index db5d308..248ae14 100644
--- a/ppapi/shared_impl/private/net_address_private_impl.h
+++ b/ppapi/shared_impl/private/net_address_private_impl.h
@@ -5,6 +5,7 @@
#ifndef PPAPI_SHARED_IMPL_PRIVATE_NET_ADDRESS_PRIVATE_IMPL_H_
#define PPAPI_SHARED_IMPL_PRIVATE_NET_ADDRESS_PRIVATE_IMPL_H_
+#include <string>
#include <vector>
#include "base/basictypes.h"
@@ -32,6 +33,9 @@ class PPAPI_SHARED_EXPORT NetAddressPrivateImpl {
std::vector<unsigned char>* address,
int* port);
+ static std::string DescribeNetAddress(const PP_NetAddress_Private& addr,
+ bool include_port);
+
static const PP_NetAddress_Private kInvalidNetAddress;
private: