| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket.h" | 5 #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket.h" |
| 6 | 6 |
| 7 #include <cstddef> | 7 #include <cstddef> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "content/browser/renderer_host/pepper/pepper_message_filter.h" | 10 #include "content/browser/renderer_host/pepper/pepper_message_filter.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 DCHECK(manager); | 35 DCHECK(manager); |
| 36 } | 36 } |
| 37 | 37 |
| 38 PepperTCPServerSocket::~PepperTCPServerSocket() { | 38 PepperTCPServerSocket::~PepperTCPServerSocket() { |
| 39 } | 39 } |
| 40 | 40 |
| 41 void PepperTCPServerSocket::Listen(const PP_NetAddress_Private& addr, | 41 void PepperTCPServerSocket::Listen(const PP_NetAddress_Private& addr, |
| 42 int32 backlog) { | 42 int32 backlog) { |
| 43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 44 | 44 |
| 45 net::IPEndPoint ip_end_point; | 45 net::IPAddressNumber address; |
| 46 int port; |
| 46 if (state_ != BEFORE_LISTENING || | 47 if (state_ != BEFORE_LISTENING || |
| 47 !NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &ip_end_point)) { | 48 !NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &address, &port)) { |
| 48 CancelListenRequest(); | 49 CancelListenRequest(); |
| 49 return; | 50 return; |
| 50 } | 51 } |
| 51 | 52 |
| 52 state_ = LISTEN_IN_PROGRESS; | 53 state_ = LISTEN_IN_PROGRESS; |
| 53 | 54 |
| 54 socket_.reset(new net::TCPServerSocket(NULL, net::NetLog::Source())); | 55 socket_.reset(new net::TCPServerSocket(NULL, net::NetLog::Source())); |
| 55 int result = socket_->Listen(ip_end_point, backlog); | 56 int result = socket_->Listen(net::IPEndPoint(address, port), backlog); |
| 56 if (result != net::ERR_IO_PENDING) | 57 if (result != net::ERR_IO_PENDING) |
| 57 OnListenCompleted(result); | 58 OnListenCompleted(result); |
| 58 } | 59 } |
| 59 | 60 |
| 60 void PepperTCPServerSocket::Accept(int32 tcp_client_socket_routing_id) { | 61 void PepperTCPServerSocket::Accept(int32 tcp_client_socket_routing_id) { |
| 61 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 62 | 63 |
| 63 if (state_ != LISTENING) { | 64 if (state_ != LISTENING) { |
| 64 SendAcceptACKError(); | 65 SendAcceptACKError(); |
| 65 return; | 66 return; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 scoped_ptr<net::StreamSocket> socket(socket_buffer_.release()); | 128 scoped_ptr<net::StreamSocket> socket(socket_buffer_.release()); |
| 128 | 129 |
| 129 net::IPEndPoint ip_end_point_local; | 130 net::IPEndPoint ip_end_point_local; |
| 130 net::IPEndPoint ip_end_point_remote; | 131 net::IPEndPoint ip_end_point_remote; |
| 131 PP_NetAddress_Private local_addr = | 132 PP_NetAddress_Private local_addr = |
| 132 NetAddressPrivateImpl::kInvalidNetAddress; | 133 NetAddressPrivateImpl::kInvalidNetAddress; |
| 133 PP_NetAddress_Private remote_addr = | 134 PP_NetAddress_Private remote_addr = |
| 134 NetAddressPrivateImpl::kInvalidNetAddress; | 135 NetAddressPrivateImpl::kInvalidNetAddress; |
| 135 | 136 |
| 136 if (socket->GetLocalAddress(&ip_end_point_local) != net::OK || | 137 if (socket->GetLocalAddress(&ip_end_point_local) != net::OK || |
| 137 !NetAddressPrivateImpl::IPEndPointToNetAddress(ip_end_point_local, | 138 !NetAddressPrivateImpl::IPEndPointToNetAddress( |
| 138 &local_addr) || | 139 ip_end_point_local.address(), |
| 140 ip_end_point_local.port(), |
| 141 &local_addr) || |
| 139 socket->GetPeerAddress(&ip_end_point_remote) != net::OK || | 142 socket->GetPeerAddress(&ip_end_point_remote) != net::OK || |
| 140 !NetAddressPrivateImpl::IPEndPointToNetAddress(ip_end_point_remote, | 143 !NetAddressPrivateImpl::IPEndPointToNetAddress( |
| 141 &remote_addr)) { | 144 ip_end_point_remote.address(), |
| 145 ip_end_point_remote.port(), |
| 146 &remote_addr)) { |
| 142 SendAcceptACKError(); | 147 SendAcceptACKError(); |
| 143 } else { | 148 } else { |
| 144 uint32 accepted_socket_id = | 149 uint32 accepted_socket_id = |
| 145 manager_->AddAcceptedTCPSocket(tcp_client_socket_routing_id, | 150 manager_->AddAcceptedTCPSocket(tcp_client_socket_routing_id, |
| 146 plugin_dispatcher_id_, | 151 plugin_dispatcher_id_, |
| 147 socket.release()); | 152 socket.release()); |
| 148 if (accepted_socket_id != 0) { | 153 if (accepted_socket_id != 0) { |
| 149 manager_->Send(new PpapiMsg_PPBTCPServerSocket_AcceptACK( | 154 manager_->Send(new PpapiMsg_PPBTCPServerSocket_AcceptACK( |
| 150 routing_id_, | 155 routing_id_, |
| 151 plugin_dispatcher_id_, | 156 plugin_dispatcher_id_, |
| 152 socket_id_, | 157 socket_id_, |
| 153 accepted_socket_id, | 158 accepted_socket_id, |
| 154 local_addr, | 159 local_addr, |
| 155 remote_addr)); | 160 remote_addr)); |
| 156 } else { | 161 } else { |
| 157 SendAcceptACKError(); | 162 SendAcceptACKError(); |
| 158 } | 163 } |
| 159 } | 164 } |
| 160 } | 165 } |
| 161 | 166 |
| 162 state_ = LISTENING; | 167 state_ = LISTENING; |
| 163 } | 168 } |
| OLD | NEW |