From 28e2919cfd2c31641609dfebc173e02c1ca4d012 Mon Sep 17 00:00:00 2001 From: deadbeef Date: Thu, 27 Jul 2017 09:14:38 -0700 Subject: [PATCH] Adding Android binding for RTCConfiguration::max_ipv6_networks. BUG=webrtc:7703 Review-Url: https://codereview.webrtc.org/2984863002 Cr-Commit-Position: refs/heads/master@{#19172} --- webrtc/sdk/android/api/org/webrtc/PeerConnection.java | 10 ++++++++++ webrtc/sdk/android/src/jni/peerconnection_jni.cc | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/webrtc/sdk/android/api/org/webrtc/PeerConnection.java b/webrtc/sdk/android/api/org/webrtc/PeerConnection.java index 480818ee5a..4bce239001 100644 --- a/webrtc/sdk/android/api/org/webrtc/PeerConnection.java +++ b/webrtc/sdk/android/api/org/webrtc/PeerConnection.java @@ -197,8 +197,17 @@ public class PeerConnection { public boolean presumeWritableWhenFullyRelayed; public Integer iceCheckMinInterval; public boolean disableIPv6OnWifi; + // By default, PeerConnection will use a limited number of IPv6 network + // interfaces, in order to avoid too many ICE candidate pairs being created + // and delaying ICE completion. + // + // Can be set to Integer.MAX_VALUE to effectively disable the limit. + public int maxIPv6Networks; public IntervalRange iceRegatherIntervalRange; + // TODO(deadbeef): Instead of duplicating the defaults here, we should do + // something to pick up the defaults from C++. The Objective-C equivalent + // of RTCConfiguration does that. public RTCConfiguration(List iceServers) { iceTransportsType = IceTransportsType.ALL; bundlePolicy = BundlePolicy.BALANCED; @@ -217,6 +226,7 @@ public class PeerConnection { presumeWritableWhenFullyRelayed = false; iceCheckMinInterval = null; disableIPv6OnWifi = false; + maxIPv6Networks = 5; iceRegatherIntervalRange = null; } }; diff --git a/webrtc/sdk/android/src/jni/peerconnection_jni.cc b/webrtc/sdk/android/src/jni/peerconnection_jni.cc index 134f7b4aa0..b819ca9c64 100644 --- a/webrtc/sdk/android/src/jni/peerconnection_jni.cc +++ b/webrtc/sdk/android/src/jni/peerconnection_jni.cc @@ -1537,6 +1537,9 @@ static void JavaRTCConfigurationToJsepRTCConfiguration( jfieldID j_disable_ipv6_on_wifi_id = GetFieldID(jni, j_rtc_config_class, "disableIPv6OnWifi", "Z"); + jfieldID j_max_ipv6_networks_id = + GetFieldID(jni, j_rtc_config_class, "maxIPv6Networks", "I"); + jfieldID j_ice_regather_interval_range_id = GetFieldID(jni, j_rtc_config_class, "iceRegatherIntervalRange", "Lorg/webrtc/PeerConnection$IntervalRange;"); @@ -1585,6 +1588,8 @@ static void JavaRTCConfigurationToJsepRTCConfiguration( } rtc_config->disable_ipv6_on_wifi = GetBooleanField(jni, j_rtc_config, j_disable_ipv6_on_wifi_id); + rtc_config->max_ipv6_networks = + GetIntField(jni, j_rtc_config, j_max_ipv6_networks_id); jobject j_ice_regather_interval_range = GetNullableObjectField( jni, j_rtc_config, j_ice_regather_interval_range_id); if (!IsNull(jni, j_ice_regather_interval_range)) {