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

Unified Diff: webrtc/p2p/base/portallocator.h

Issue 2983213002: Relanding: Move "max IPv6 networks" logic to BasicPortAllocator, and fix sorting. (Closed)
Patch Set: Fixing P2PTransportChannelMultihomedTest (was relying on ordering assumptions it shouldn't have beeā€¦ Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel_unittest.cc ('k') | webrtc/p2p/client/basicportallocator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/base/portallocator.h
diff --git a/webrtc/p2p/base/portallocator.h b/webrtc/p2p/base/portallocator.h
index 9540e40d74faefe69170c07aa0fe4e1fd0322584..45a941a9b748e7a77b3c600d0f70925abcf923a3 100644
--- a/webrtc/p2p/base/portallocator.h
+++ b/webrtc/p2p/base/portallocator.h
@@ -103,6 +103,12 @@ const uint32_t kDefaultStepDelay = 1000; // 1 sec step delay.
// internal. Less than 20ms is not acceptable. We choose 50ms as our default.
const uint32_t kMinimumStepDelay = 50;
+// Turning on IPv6 could make many IPv6 interfaces available for connectivity
+// check and delay the call setup time. kDefaultMaxIPv6Networks is the default
+// upper limit of IPv6 networks but could be changed by
+// set_max_ipv6_networks().
+constexpr int kDefaultMaxIPv6Networks = 5;
+
// CF = CANDIDATE FILTER
enum {
CF_NONE = 0x0,
@@ -324,14 +330,14 @@ class PortAllocatorSession : public sigslot::has_slots<> {
// passing it into an object that uses it on a different thread.
class PortAllocator : public sigslot::has_slots<> {
public:
- PortAllocator() :
- flags_(kDefaultPortAllocatorFlags),
- min_port_(0),
- max_port_(0),
- step_delay_(kDefaultStepDelay),
- allow_tcp_listen_(true),
- candidate_filter_(CF_ALL) {
- }
+ PortAllocator()
+ : flags_(kDefaultPortAllocatorFlags),
+ min_port_(0),
+ max_port_(0),
+ max_ipv6_networks_(kDefaultMaxIPv6Networks),
+ step_delay_(kDefaultStepDelay),
+ allow_tcp_listen_(true),
+ candidate_filter_(CF_ALL) {}
virtual ~PortAllocator() {}
@@ -429,6 +435,17 @@ class PortAllocator : public sigslot::has_slots<> {
return true;
}
+ // Can be used to change the default numer of IPv6 network interfaces used
+ // (5). Can set to INT_MAX to effectively disable the limit.
+ //
+ // TODO(deadbeef): Applications shouldn't have to arbitrarily limit the
+ // number of available IPv6 network interfaces just because they could slow
+ // ICE down. We should work on making our ICE logic smarter (for example,
+ // prioritizing pinging connections that are most likely to work) so that
+ // every network interface can be used without impacting ICE's speed.
+ void set_max_ipv6_networks(int networks) { max_ipv6_networks_ = networks; }
+ int max_ipv6_networks() { return max_ipv6_networks_; }
+
uint32_t step_delay() const { return step_delay_; }
void set_step_delay(uint32_t delay) { step_delay_ = delay; }
@@ -472,6 +489,7 @@ class PortAllocator : public sigslot::has_slots<> {
rtc::ProxyInfo proxy_;
int min_port_;
int max_port_;
+ int max_ipv6_networks_;
uint32_t step_delay_;
bool allow_tcp_listen_;
uint32_t candidate_filter_;
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel_unittest.cc ('k') | webrtc/p2p/client/basicportallocator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698