| Index: ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| index d596b022eb4b7c98de3857b022bbe36111f9bcaa..3879b68b26d1db5ac63dacc3b5169ff6c5214cc9 100644
|
| --- a/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| +++ b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| @@ -58,6 +58,14 @@ int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr,
|
| return PP_OK_COMPLETIONPENDING;
|
| }
|
|
|
| +PP_Bool UDPSocketPrivateImpl::GetBoundAddress(PP_NetAddress_Private* addr) {
|
| + if (!addr || !bound_ || closed_)
|
| + return PP_FALSE;
|
| +
|
| + *addr = bound_addr_;
|
| + return PP_TRUE;
|
| +}
|
| +
|
| int32_t UDPSocketPrivateImpl::RecvFrom(char* buffer,
|
| int32_t num_bytes,
|
| PP_CompletionCallback callback) {
|
| @@ -122,7 +130,9 @@ void UDPSocketPrivateImpl::Close() {
|
| PostAbortIfNecessary(&sendto_callback_);
|
| }
|
|
|
| -void UDPSocketPrivateImpl::OnBindCompleted(bool succeeded) {
|
| +void UDPSocketPrivateImpl::OnBindCompleted(
|
| + bool succeeded,
|
| + const PP_NetAddress_Private& addr) {
|
| if (!TrackedCallback::IsPending(bind_callback_)) {
|
| NOTREACHED();
|
| return;
|
| @@ -131,8 +141,10 @@ void UDPSocketPrivateImpl::OnBindCompleted(bool succeeded) {
|
| if (succeeded)
|
| bound_ = true;
|
|
|
| + bound_addr_ = addr;
|
| +
|
| TrackedCallback::ClearAndRun(&bind_callback_,
|
| - succeeded ? PP_OK : PP_ERROR_FAILED);
|
| + succeeded ? PP_OK : PP_ERROR_FAILED);
|
| }
|
|
|
| void UDPSocketPrivateImpl::OnRecvFromCompleted(
|
| @@ -180,6 +192,9 @@ void UDPSocketPrivateImpl::Init(uint32 socket_id) {
|
| recvfrom_addr_.size = 0;
|
| memset(recvfrom_addr_.data, 0,
|
| arraysize(recvfrom_addr_.data) * sizeof(*recvfrom_addr_.data));
|
| + bound_addr_.size = 0;
|
| + memset(bound_addr_.data, 0,
|
| + arraysize(bound_addr_.data) * sizeof(*bound_addr_.data));
|
| }
|
|
|
| void UDPSocketPrivateImpl::PostAbortIfNecessary(
|
|
|