Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: content/browser/renderer_host/pepper_udp_socket.cc

Issue 9212047: Add GetBoundAddress to PPB_UDPSocket_Private (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: a few small changes after self review Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/pepper_udp_socket.cc
diff --git a/content/browser/renderer_host/pepper_udp_socket.cc b/content/browser/renderer_host/pepper_udp_socket.cc
index 33f2c7f0c17199eef6e047f4680cc5ea250c975b..ad7b7457ee7c0be0cd27da943b9934fcb4399b86 100644
--- a/content/browser/renderer_host/pepper_udp_socket.cc
+++ b/content/browser/renderer_host/pepper_udp_socket.cc
@@ -27,7 +27,8 @@ PepperUDPSocket::PepperUDPSocket(
: manager_(manager),
routing_id_(routing_id),
plugin_dispatcher_id_(plugin_dispatcher_id),
- socket_id_(socket_id) {
+ socket_id_(socket_id),
+ bound_port_(0) {
DCHECK(manager);
}
@@ -40,6 +41,9 @@ PepperUDPSocket::~PepperUDPSocket() {
void PepperUDPSocket::Bind(const PP_NetAddress_Private& addr) {
socket_.reset(new net::UDPServerSocket(NULL, net::NetLog::Source()));
+ // Reset |bound_port_| to zero.
+ bound_port_ = 0;
+
net::IPEndPoint address;
if (!socket_.get() ||
!NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &address)) {
@@ -49,6 +53,13 @@ void PepperUDPSocket::Bind(const PP_NetAddress_Private& addr) {
int result = socket_->Listen(address);
+ // If we are successful, get the local port that we bound to.
+ if (result == net::OK) {
+ net::IPEndPoint current_address;
+ socket_->GetLocalAddress(&current_address);
+ bound_port_ = current_address.port();
+ }
+
SendBindACK(result == net::OK);
}
@@ -107,7 +118,7 @@ void PepperUDPSocket::SendSendToACKError() {
void PepperUDPSocket::SendBindACK(bool result) {
manager_->Send(new PpapiMsg_PPBUDPSocket_BindACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, result));
+ routing_id_, plugin_dispatcher_id_, socket_id_, result, bound_port_));
}
void PepperUDPSocket::OnRecvFromCompleted(int result) {

Powered by Google App Engine
This is Rietveld 408576698