| Index: content/browser/renderer_host/p2p/socket_dispatcher_host.cc
|
| diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
|
| index be63c0217bb4cd277713dac1d04d688d5404be26..b94fe22dff1c5afedfdfcbd8e26f4b80a183538e 100644
|
| --- a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
|
| +++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
|
| @@ -99,7 +99,9 @@ P2PSocketDispatcherHost::P2PSocketDispatcherHost(
|
| : BrowserMessageFilter(P2PMsgStart),
|
| resource_context_(resource_context),
|
| url_context_(url_context),
|
| - monitoring_networks_(false) {
|
| + monitoring_networks_(false),
|
| + dump_incoming_rtp_packet_(false),
|
| + dump_outgoing_rtp_packet_(false) {
|
| }
|
|
|
| void P2PSocketDispatcherHost::OnChannelClosing() {
|
| @@ -147,6 +149,32 @@ void P2PSocketDispatcherHost::OnIPAddressChanged() {
|
| &P2PSocketDispatcherHost::DoGetNetworkList, this));
|
| }
|
|
|
| +void P2PSocketDispatcherHost::StartRtpDump(
|
| + bool incoming,
|
| + bool outgoing,
|
| + const RenderProcessHost::WebRtcRtpPacketCallback& packet_callback) {
|
| + if (dump_incoming_rtp_packet_ != incoming ||
|
| + dump_outgoing_rtp_packet_ != outgoing) {
|
| + dump_incoming_rtp_packet_ = incoming;
|
| + dump_outgoing_rtp_packet_ = outgoing;
|
| +
|
| + packet_callback_ = packet_callback;
|
| + for (SocketsMap::iterator it = sockets_.begin(); it != sockets_.end(); ++it)
|
| + it->second->StartRtpDump(incoming, outgoing, packet_callback);
|
| + }
|
| +}
|
| +
|
| +void P2PSocketDispatcherHost::StopRtpDumpOnUIThread(bool incoming,
|
| + bool outgoing) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(&P2PSocketDispatcherHost::StopRtpDumpOnIOThread,
|
| + this,
|
| + incoming,
|
| + outgoing));
|
| +}
|
| +
|
| P2PSocketDispatcherHost::~P2PSocketDispatcherHost() {
|
| DCHECK(sockets_.empty());
|
| DCHECK(dns_requests_.empty());
|
| @@ -210,6 +238,12 @@ void P2PSocketDispatcherHost::OnCreateSocket(
|
|
|
| if (socket->Init(local_address, remote_address)) {
|
| sockets_[socket_id] = socket.release();
|
| +
|
| + if (dump_incoming_rtp_packet_ || dump_outgoing_rtp_packet_) {
|
| + sockets_[socket_id]->StartRtpDump(dump_incoming_rtp_packet_,
|
| + dump_outgoing_rtp_packet_,
|
| + packet_callback_);
|
| + }
|
| }
|
| }
|
|
|
| @@ -297,4 +331,19 @@ void P2PSocketDispatcherHost::OnAddressResolved(
|
| delete request;
|
| }
|
|
|
| +void P2PSocketDispatcherHost::StopRtpDumpOnIOThread(bool incoming,
|
| + bool outgoing) {
|
| + if (dump_incoming_rtp_packet_ == incoming ||
|
| + dump_outgoing_rtp_packet_ == outgoing) {
|
| + dump_incoming_rtp_packet_ = !incoming;
|
| + dump_outgoing_rtp_packet_ = !outgoing;
|
| +
|
| + if (!dump_incoming_rtp_packet_ && !dump_outgoing_rtp_packet_)
|
| + packet_callback_.Reset();
|
| +
|
| + for (SocketsMap::iterator it = sockets_.begin(); it != sockets_.end(); ++it)
|
| + it->second->StopRtpDump(incoming, outgoing);
|
| + }
|
| +}
|
| +
|
| } // namespace content
|
|
|