| 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 23f125d0acf1fca4445284ef33bf72078e7cd2bf..46227a7d0a2d3a9bf3b10901df1c447c6e30f2e5 100644
|
| --- a/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| +++ b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -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(
|
|
|