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

Side by Side Diff: content/browser/renderer_host/p2p/socket_dispatcher_host.cc

Issue 2249473002: Remove use of stl_util's STLDeleteContainerPairSecondPointers from content/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: win2 Created 4 years, 4 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 unified diff | Download patch
OLDNEW
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/p2p/socket_dispatcher_host.h" 5 #include "content/browser/renderer_host/p2p/socket_dispatcher_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/stl_util.h"
11 #include "content/browser/bad_message.h" 10 #include "content/browser/bad_message.h"
12 #include "content/browser/renderer_host/p2p/socket_host.h" 11 #include "content/browser/renderer_host/p2p/socket_host.h"
13 #include "content/common/p2p_messages.h" 12 #include "content/common/p2p_messages.h"
14 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
15 #include "content/public/browser/resource_context.h" 14 #include "content/public/browser/resource_context.h"
16 #include "net/base/address_list.h" 15 #include "net/base/address_list.h"
17 #include "net/base/completion_callback.h" 16 #include "net/base/completion_callback.h"
18 #include "net/base/net_errors.h" 17 #include "net/base/net_errors.h"
19 #include "net/base/network_interfaces.h" 18 #include "net/base/network_interfaces.h"
20 #include "net/base/sys_addrinfo.h" 19 #include "net/base/sys_addrinfo.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 : BrowserMessageFilter(P2PMsgStart), 114 : BrowserMessageFilter(P2PMsgStart),
116 resource_context_(resource_context), 115 resource_context_(resource_context),
117 url_context_(url_context), 116 url_context_(url_context),
118 monitoring_networks_(false), 117 monitoring_networks_(false),
119 dump_incoming_rtp_packet_(false), 118 dump_incoming_rtp_packet_(false),
120 dump_outgoing_rtp_packet_(false) { 119 dump_outgoing_rtp_packet_(false) {
121 } 120 }
122 121
123 void P2PSocketDispatcherHost::OnChannelClosing() { 122 void P2PSocketDispatcherHost::OnChannelClosing() {
124 // Since the IPC sender is gone, close pending connections. 123 // Since the IPC sender is gone, close pending connections.
125 base::STLDeleteContainerPairSecondPointers(sockets_.begin(), sockets_.end());
126 sockets_.clear(); 124 sockets_.clear();
127 125
128 base::STLDeleteContainerPointers(dns_requests_.begin(), dns_requests_.end()); 126 base::STLDeleteContainerPointers(dns_requests_.begin(), dns_requests_.end());
129 dns_requests_.clear(); 127 dns_requests_.clear();
130 128
131 if (monitoring_networks_) { 129 if (monitoring_networks_) {
132 net::NetworkChangeNotifier::RemoveIPAddressObserver(this); 130 net::NetworkChangeNotifier::RemoveIPAddressObserver(this);
133 monitoring_networks_ = false; 131 monitoring_networks_ = false;
134 } 132 }
135 } 133 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 P2PSocketDispatcherHost::~P2PSocketDispatcherHost() { 197 P2PSocketDispatcherHost::~P2PSocketDispatcherHost() {
200 DCHECK(sockets_.empty()); 198 DCHECK(sockets_.empty());
201 DCHECK(dns_requests_.empty()); 199 DCHECK(dns_requests_.empty());
202 200
203 if (monitoring_networks_) 201 if (monitoring_networks_)
204 net::NetworkChangeNotifier::RemoveIPAddressObserver(this); 202 net::NetworkChangeNotifier::RemoveIPAddressObserver(this);
205 } 203 }
206 204
207 P2PSocketHost* P2PSocketDispatcherHost::LookupSocket(int socket_id) { 205 P2PSocketHost* P2PSocketDispatcherHost::LookupSocket(int socket_id) {
208 SocketsMap::iterator it = sockets_.find(socket_id); 206 SocketsMap::iterator it = sockets_.find(socket_id);
209 return (it == sockets_.end()) ? NULL : it->second; 207 return (it == sockets_.end()) ? nullptr : it->second.get();
210 } 208 }
211 209
212 void P2PSocketDispatcherHost::OnStartNetworkNotifications() { 210 void P2PSocketDispatcherHost::OnStartNetworkNotifications() {
213 if (!monitoring_networks_) { 211 if (!monitoring_networks_) {
214 net::NetworkChangeNotifier::AddIPAddressObserver(this); 212 net::NetworkChangeNotifier::AddIPAddressObserver(this);
215 monitoring_networks_ = true; 213 monitoring_networks_ = true;
216 } 214 }
217 215
218 BrowserThread::PostTask( 216 BrowserThread::PostTask(
219 BrowserThread::FILE, FROM_HERE, base::Bind( 217 BrowserThread::FILE, FROM_HERE, base::Bind(
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 std::unique_ptr<P2PSocketHost> socket(P2PSocketHost::Create( 256 std::unique_ptr<P2PSocketHost> socket(P2PSocketHost::Create(
259 this, socket_id, type, url_context_.get(), &throttler_)); 257 this, socket_id, type, url_context_.get(), &throttler_));
260 258
261 if (!socket) { 259 if (!socket) {
262 Send(new P2PMsg_OnError(socket_id)); 260 Send(new P2PMsg_OnError(socket_id));
263 return; 261 return;
264 } 262 }
265 263
266 if (socket->Init(local_address, port_range.min_port, port_range.max_port, 264 if (socket->Init(local_address, port_range.min_port, port_range.max_port,
267 remote_address)) { 265 remote_address)) {
268 sockets_[socket_id] = socket.release(); 266 sockets_[socket_id] = std::move(socket);
269 267
270 if (dump_incoming_rtp_packet_ || dump_outgoing_rtp_packet_) { 268 if (dump_incoming_rtp_packet_ || dump_outgoing_rtp_packet_) {
271 sockets_[socket_id]->StartRtpDump(dump_incoming_rtp_packet_, 269 sockets_[socket_id]->StartRtpDump(dump_incoming_rtp_packet_,
272 dump_outgoing_rtp_packet_, 270 dump_outgoing_rtp_packet_,
273 packet_callback_); 271 packet_callback_);
274 } 272 }
275 } 273 }
276 } 274 }
277 275
278 void P2PSocketDispatcherHost::OnAcceptIncomingTcpConnection( 276 void P2PSocketDispatcherHost::OnAcceptIncomingTcpConnection(
279 int listen_socket_id, const net::IPEndPoint& remote_address, 277 int listen_socket_id, const net::IPEndPoint& remote_address,
280 int connected_socket_id) { 278 int connected_socket_id) {
281 P2PSocketHost* socket = LookupSocket(listen_socket_id); 279 P2PSocketHost* socket = LookupSocket(listen_socket_id);
282 if (!socket) { 280 if (!socket) {
283 LOG(ERROR) << "Received P2PHostMsg_AcceptIncomingTcpConnection " 281 LOG(ERROR) << "Received P2PHostMsg_AcceptIncomingTcpConnection "
284 "for invalid listen_socket_id."; 282 "for invalid listen_socket_id.";
285 return; 283 return;
286 } 284 }
287 if (LookupSocket(connected_socket_id) != NULL) { 285 if (LookupSocket(connected_socket_id) != nullptr) {
288 LOG(ERROR) << "Received P2PHostMsg_AcceptIncomingTcpConnection " 286 LOG(ERROR) << "Received P2PHostMsg_AcceptIncomingTcpConnection "
289 "for duplicated connected_socket_id."; 287 "for duplicated connected_socket_id.";
290 return; 288 return;
291 } 289 }
292 290
293 P2PSocketHost* accepted_connection = 291 std::unique_ptr<P2PSocketHost> accepted_connection(
294 socket->AcceptIncomingTcpConnection(remote_address, connected_socket_id); 292 socket->AcceptIncomingTcpConnection(remote_address, connected_socket_id));
295 if (accepted_connection) { 293 if (accepted_connection) {
296 sockets_[connected_socket_id] = accepted_connection; 294 sockets_[connected_socket_id] = std::move(accepted_connection);
297 } 295 }
298 } 296 }
299 297
300 void P2PSocketDispatcherHost::OnSend(int socket_id, 298 void P2PSocketDispatcherHost::OnSend(int socket_id,
301 const net::IPEndPoint& socket_address, 299 const net::IPEndPoint& socket_address,
302 const std::vector<char>& data, 300 const std::vector<char>& data,
303 const rtc::PacketOptions& options, 301 const rtc::PacketOptions& options,
304 uint64_t packet_id) { 302 uint64_t packet_id) {
305 P2PSocketHost* socket = LookupSocket(socket_id); 303 P2PSocketHost* socket = LookupSocket(socket_id);
306 if (!socket) { 304 if (!socket) {
307 LOG(ERROR) << "Received P2PHostMsg_Send for invalid socket_id."; 305 LOG(ERROR) << "Received P2PHostMsg_Send for invalid socket_id.";
308 return; 306 return;
309 } 307 }
310 308
311 if (data.size() > kMaximumPacketSize) { 309 if (data.size() > kMaximumPacketSize) {
312 LOG(ERROR) << "Received P2PHostMsg_Send with a packet that is too big: " 310 LOG(ERROR) << "Received P2PHostMsg_Send with a packet that is too big: "
313 << data.size(); 311 << data.size();
314 Send(new P2PMsg_OnError(socket_id)); 312 Send(new P2PMsg_OnError(socket_id));
315 delete socket; 313 sockets_.erase(socket_id); // deletes the socket
316 sockets_.erase(socket_id);
317 return; 314 return;
318 } 315 }
319 316
320 socket->Send(socket_address, data, options, packet_id); 317 socket->Send(socket_address, data, options, packet_id);
321 } 318 }
322 319
323 void P2PSocketDispatcherHost::OnSetOption(int socket_id, 320 void P2PSocketDispatcherHost::OnSetOption(int socket_id,
324 P2PSocketOption option, 321 P2PSocketOption option,
325 int value) { 322 int value) {
326 P2PSocketHost* socket = LookupSocket(socket_id); 323 P2PSocketHost* socket = LookupSocket(socket_id);
327 if (!socket) { 324 if (!socket) {
328 LOG(ERROR) << "Received P2PHostMsg_SetOption for invalid socket_id."; 325 LOG(ERROR) << "Received P2PHostMsg_SetOption for invalid socket_id.";
329 return; 326 return;
330 } 327 }
331 328
332 socket->SetOption(option, value); 329 socket->SetOption(option, value);
333 } 330 }
334 331
335 void P2PSocketDispatcherHost::OnDestroySocket(int socket_id) { 332 void P2PSocketDispatcherHost::OnDestroySocket(int socket_id) {
336 SocketsMap::iterator it = sockets_.find(socket_id); 333 SocketsMap::iterator it = sockets_.find(socket_id);
337 if (it != sockets_.end()) { 334 if (it != sockets_.end()) {
338 delete it->second; 335 sockets_.erase(it); // deletes the socket
339 sockets_.erase(it);
340 } else { 336 } else {
341 LOG(ERROR) << "Received P2PHostMsg_DestroySocket for invalid socket_id."; 337 LOG(ERROR) << "Received P2PHostMsg_DestroySocket for invalid socket_id.";
342 } 338 }
343 } 339 }
344 340
345 void P2PSocketDispatcherHost::DoGetNetworkList() { 341 void P2PSocketDispatcherHost::DoGetNetworkList() {
346 net::NetworkInterfaceList list; 342 net::NetworkInterfaceList list;
347 if (!net::GetNetworkList(&list, net::EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) { 343 if (!net::GetNetworkList(&list, net::EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) {
348 LOG(ERROR) << "GetNetworkList failed."; 344 LOG(ERROR) << "GetNetworkList failed.";
349 return; 345 return;
(...skipping 15 matching lines...) Expand all
365 } 361 }
366 362
367 net::IPAddress P2PSocketDispatcherHost::GetDefaultLocalAddress(int family) { 363 net::IPAddress P2PSocketDispatcherHost::GetDefaultLocalAddress(int family) {
368 DCHECK(family == AF_INET || family == AF_INET6); 364 DCHECK(family == AF_INET || family == AF_INET6);
369 365
370 // Creation and connection of a UDP socket might be janky. 366 // Creation and connection of a UDP socket might be janky.
371 DCHECK_CURRENTLY_ON(BrowserThread::FILE); 367 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
372 368
373 std::unique_ptr<net::DatagramClientSocket> socket( 369 std::unique_ptr<net::DatagramClientSocket> socket(
374 net::ClientSocketFactory::GetDefaultFactory()->CreateDatagramClientSocket( 370 net::ClientSocketFactory::GetDefaultFactory()->CreateDatagramClientSocket(
375 net::DatagramSocket::DEFAULT_BIND, net::RandIntCallback(), NULL, 371 net::DatagramSocket::DEFAULT_BIND, net::RandIntCallback(), nullptr,
376 net::NetLog::Source())); 372 net::NetLog::Source()));
377 373
378 net::IPAddress ip_address; 374 net::IPAddress ip_address;
379 if (family == AF_INET) { 375 if (family == AF_INET) {
380 ip_address = net::IPAddress(kPublicIPv4Host); 376 ip_address = net::IPAddress(kPublicIPv4Host);
381 } else { 377 } else {
382 ip_address = net::IPAddress(kPublicIPv6Host); 378 ip_address = net::IPAddress(kPublicIPv6Host);
383 } 379 }
384 380
385 if (socket->Connect(net::IPEndPoint(ip_address, kPublicPort)) != net::OK) { 381 if (socket->Connect(net::IPEndPoint(ip_address, kPublicPort)) != net::OK) {
(...skipping 28 matching lines...) Expand all
414 410
415 if (!dump_incoming_rtp_packet_ && !dump_outgoing_rtp_packet_) 411 if (!dump_incoming_rtp_packet_ && !dump_outgoing_rtp_packet_)
416 packet_callback_.Reset(); 412 packet_callback_.Reset();
417 413
418 for (SocketsMap::iterator it = sockets_.begin(); it != sockets_.end(); ++it) 414 for (SocketsMap::iterator it = sockets_.begin(); it != sockets_.end(); ++it)
419 it->second->StopRtpDump(incoming, outgoing); 415 it->second->StopRtpDump(incoming, outgoing);
420 } 416 }
421 } 417 }
422 418
423 } // namespace content 419 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698