Index: webrtc/p2p/client/basicportallocator.cc |
diff --git a/webrtc/p2p/client/basicportallocator.cc b/webrtc/p2p/client/basicportallocator.cc |
index 14f7b13212db920adbfd7bc957eb1894ef798e8d..20fc84a38a22fc05eeed1942a1231a1ba94aaf27 100644 |
--- a/webrtc/p2p/client/basicportallocator.cc |
+++ b/webrtc/p2p/client/basicportallocator.cc |
@@ -417,6 +417,19 @@ void BasicPortAllocatorSession::GetNetworks( |
network->type(); |
}), |
networks->end()); |
+ |
+ if (flags() & PORTALLOCATOR_DISABLE_COSTLY_NETWORKS) { |
+ uint16_t lowest_cost = rtc::kNetworkCostMax; |
+ for (rtc::Network* network : *networks) { |
+ lowest_cost = std::min<uint16_t>(lowest_cost, network->GetCost()); |
+ } |
+ networks->erase(std::remove_if(networks->begin(), networks->end(), |
+ [lowest_cost](rtc::Network* network) { |
+ return network->GetCost() > |
+ lowest_cost + rtc::kNetworkCostLow; |
+ }), |
+ networks->end()); |
+ } |
} |
// For each network, see if we have a sequence that covers it already. If not, |