mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-18 08:07:56 +01:00
![]() This cl/ fixes a race condition with the recent additions to NetworkMonitorAutoDetect (getAllNetworksFromCache). The getAllNetworksFromCache-feature uses the by the Android team preferred way of enumerating networks, i.e to register network listeners. This however introduces a unpleasant race condition like this: 1) network.cc discover rmnet0 2) BasicPortAllocator tries to create UDP port on rmnet0 - This fails as BindSocketToNetwork requires a android handle. 3) NetworkMonitorAutoDetect gets callback with rmnet0 4) BasicPortAllocator tries to create TCP port on rmnet0 - This succeeds. 5) Since rmnet0 has one working port, there will not be any new ports created on that network => We end up with a TCP only connection :( --- By impl. IsAdapterAvailable, we make sure that the network will not be used by BasicPortAllocator (or anyone else!) until we support binding to it. The IsAdapterAvailable was implemented for IOS, and has test coverage using FakeNetworkManager. This cl/ is default enabled with the kill-switch WebRTC-AndroidNetworkMonitor-IsAdapterAvailable. Bug: webrtc:13741 Change-Id: I7c2cb7789660fd2e082c214d00e50c894666b07c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257400 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Jonas Oreland <jonaso@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36406} |
||
---|---|---|
.. | ||
api/org/webrtc | ||
instrumentationtests | ||
native_api | ||
native_unittests | ||
src | ||
tests | ||
AndroidManifest.xml | ||
BUILD.gn | ||
OWNERS | ||
README |
This directory holds a Java implementation of the webrtc::PeerConnection API, as well as the JNI glue C++ code that lets the Java implementation reuse the C++ implementation of the same API. To build the Java API and related tests, make sure you have a WebRTC checkout with Android specific parts. This can be used for linux development as well by configuring gn appropriately, as it is a superset of the webrtc checkout: fetch --nohooks webrtc_android gclient sync You also must generate GN projects with: --args='target_os="android" target_cpu="arm"' More information on getting the code, compiling and running the AppRTCMobile app can be found at: https://webrtc.org/native-code/android/ To use the Java API, start by looking at the public interface of org.webrtc.PeerConnection{,Factory} and the org.webrtc.PeerConnectionTest. To understand the implementation of the API, see the native code in src/jni/pc/.