android_packages_modules_Co.../Tethering
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lorenzo Colitti 491999292b Fix a race condition in upstream selection.
Current upstream selection code suffers from a race where if the
CONNECTIVITY_ACTION broadcast for a given network switch is
received and processed before the NetworkCallbacks for that
network switch, upstream selection just re-selects the same
upstream it had before. The incorrect upstream persists until
another CONNECTIVITY_ACTION is received.

Fix this by defining a new EVENT_DEFAULT_SWITCHED message code
communicated from UpstreamNetworkMonitor to Tethering, and send
that whenever the default network switches.

The message is sent in onLinkPropertiesChanged, because the
tethering code stores all information about networks in an
UpstreamNetworkState structure that contains Network,
LinkProperties and NetworkCapabilities. When a network switch
occurs, onLinkPropertiesChanged always follows onAvailable and
onCapabilitiesChanged, and thus marks the first point in time
when all the information is available.

This CL tries not to change existing codepaths too much, but
it does move the update of mDefaultInternetNetwork from
onCapabilitiesChanged to onLinkPropertiesChanged. This should
not be a problem because the only thing that reads
mDefaultInternetNetwork is getCurrentPreferredUpstream, which,
in the case of a default network switch, will be run by the
onLinkPropertiesChanged which will immediately follow.

Bug: 173068192
Test: changes to existing unit tests show bug is fixed
Change-Id: Ic9196bc92892811b25bda463ffd839ee5c19d294
2021-04-05 22:52:13 +09:00
..
apex Add ServiceConnectivityResources to in-process APEX 2021-03-14 12:33:30 +09:00
apishim [NFCT.TETHER.15] Attach BPF program in the mainline module 2021-03-11 17:49:42 +08:00
bpf_progs bpf_progs - remove unused dependencies 2021-03-19 03:39:42 +00:00
common/TetheringLib Add dependency on system API in connectivity 2021-02-26 19:36:06 +09:00
jni [NFCT.TETHER.15] Attach BPF program in the mainline module 2021-03-11 17:49:42 +08:00
res wifi: Add bridged pre-fix for tethering interface 2021-01-18 01:21:32 +00:00
src Fix a race condition in upstream selection. 2021-04-05 22:52:13 +09:00
tests Fix a race condition in upstream selection. 2021-04-05 22:52:13 +09:00
Android.bp Update sources of Tethering module since it is renamed 2021-03-11 07:36:55 +00:00
AndroidManifest.xml Update language to comply with Android's inclusive language guidance 2020-07-29 12:05:04 +08:00
AndroidManifest_InProcess.xml Change tethering file structure to respect its package name 2020-04-14 14:33:45 +08:00
AndroidManifestBase.xml Add usesCleartextTraffic to Tethering 2020-08-18 09:00:58 +00:00
jarjar-rules.txt Update sources of Tethering module since it is renamed 2021-03-11 07:36:55 +00:00
OWNERS Revert "Add OWNERS block to prevent the tree from mooving during migration." 2020-10-31 04:50:11 +00:00
proguard.flags Provide a easy way to access bpf maps from java 2021-01-11 17:43:27 +08:00
TEST_MAPPING Move TetheringTests to presubmit 2020-06-10 02:33:37 +00:00