| Index: webrtc/p2p/base/p2ptransportchannel.cc
|
| diff --git a/webrtc/p2p/base/p2ptransportchannel.cc b/webrtc/p2p/base/p2ptransportchannel.cc
|
| index b21d584bf8930d0d3acd47a37d4c77649bf3da49..cdfcf956434723436a355032f3704f53b755de74 100644
|
| --- a/webrtc/p2p/base/p2ptransportchannel.cc
|
| +++ b/webrtc/p2p/base/p2ptransportchannel.cc
|
| @@ -761,6 +761,19 @@ void P2PTransportChannel::AddRemoteCandidate(const Candidate& candidate) {
|
| SortConnections();
|
| }
|
|
|
| +void P2PTransportChannel::RemoveRemoteCandidate(
|
| + const Candidate& cand_to_remove) {
|
| + auto iter =
|
| + std::remove_if(remote_candidates_.begin(), remote_candidates_.end(),
|
| + [cand_to_remove](const Candidate& candidate) {
|
| + return cand_to_remove.MatchesForRemoval(candidate);
|
| + });
|
| + if (iter != remote_candidates_.end()) {
|
| + LOG(LS_VERBOSE) << "Removed remote candidate " << cand_to_remove.ToString();
|
| + remote_candidates_.erase(iter, remote_candidates_.end());
|
| + }
|
| +}
|
| +
|
| // Creates connections from all of the ports that we care about to the given
|
| // remote candidate. The return value is true if we created a connection from
|
| // the origin port.
|
| @@ -1449,7 +1462,11 @@ void P2PTransportChannel::OnPortNetworkInactive(PortInterface* port) {
|
| ports_.erase(it);
|
| LOG(INFO) << "Removed port due to inactive networks: " << ports_.size()
|
| << " remaining";
|
| - // TODO(honghaiz): Signal candidate removals to the remote side.
|
| + std::vector<Candidate> candidates = port->Candidates();
|
| + for (Candidate& candidate : candidates) {
|
| + candidate.set_transport_name(transport_name());
|
| + }
|
| + SignalCandidatesRemoved(this, candidates);
|
| }
|
|
|
| // We data is available, let listeners know
|
|
|