webrtc/sdk/android/native_unittests
Jonas Oreland da2fd2a2b2 Fix problem with ipv4 over ipv6 on Android
This patch fixes a problem with using ipv4 over ipv6
addresses on Android. These addresses are discovered
using 'getifaddr' with interfaces called 'v4-wlan0' or
'v4-rmnet' but the Android API does not report them.

This leads to failure when BasicPortAllocator tries
to bind a socket to the ip-address, making the ipv4
address unusable.

This solution does the following
1) Insert BasicNetworkManager as NetworkBinderInterface
rather than AndroidNetworkManager.

2) When SocketServer calls BindSocketToNetwork,
BasicNetworkManager first lookup the interface name,
and then calls AndroidNetworkManager.

3) AndroidNetworkManager will then first try to bind
using the known ip-addresses, and if it can't find the network
it will instead match the interface names.

The patch has been tested on real android devices, and works fine.
And everything is disabled by default, and is enabled by field trial.

My plan is to rollout the feature, checking that it does not introduce
any problems, and if so, enabled for all.

Bug: webrtc:10707
Change-Id: I7081ba43d4ce17077acfa5fbab44eda127ac3971
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211003
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33422}
2021-03-10 16:08:18 +00:00
..
audio_device Migrate rtc_tools/, sdk/, and system_wrappers/ to webrtc::Mutex. 2020-07-10 08:02:05 +00:00
codecs Rename ..BitrateThresholds to ..BitrateLimits. 2019-07-03 14:50:46 +00:00
org/webrtc Fix errorprone issues preventing Chromium Roll. 2019-11-27 12:52:48 +00:00
peerconnection Reland "Pass NetworkMonitorFactory through PeerConnectionFactory." 2020-08-01 00:36:27 +00:00
stacktrace Migrate rtc_tools/, sdk/, and system_wrappers/ to webrtc::Mutex. 2020-07-10 08:02:05 +00:00
video Mass refactoring: Change JNI #includes to use full paths (webrtc/). 2019-06-26 08:23:14 +00:00
android_network_monitor_unittest.cc Fix problem with ipv4 over ipv6 on Android 2021-03-10 16:08:18 +00:00
application_context_provider.cc Mass refactoring: Change JNI #includes to use full paths (webrtc/). 2019-06-26 08:23:14 +00:00
application_context_provider.h Use JavaAudioDeviceModule as default 2019-03-04 13:44:33 +00:00
DEPS Add unit tests for Android audio device module 2018-04-12 09:27:45 +00:00
java_types_unittest.cc Mass refactoring: Change JNI #includes to use full paths (webrtc/). 2019-06-26 08:23:14 +00:00
test_jni_onload.cc Implements JavaToNativeStringMap and adds tests for native API. 2018-02-09 10:34:44 +00:00