From 3897dc179f23dfbaf10f0139160aa29a232144f5 Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Mon, 7 Aug 2017 18:11:22 -0700 Subject: [PATCH] Always note the state of RNDIS from USB broadcasts. Test: as follows - built - flashed - booted - runtest frameworks-net passes Bug: 63970368 Change-Id: I273edbe21fea586f1353ff378515401efc6bb15e --- .../android/server/connectivity/Tethering.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index b0be8f7b96355..015f7f0778088 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -832,20 +832,23 @@ public class Tethering extends BaseNetworkObserver { // functions are ready to use. // // For more explanation, see b/62552150 . - if (usbConnected && !usbConfigured) { - // Nothing for us to do here. - // TODO: consider ignoring DISCONNECTED broadcasts as well. - return; - } - synchronized (Tethering.this.mPublicSync) { + // Always record the state of RNDIS. mRndisEnabled = rndisEnabled; + + if (usbConnected && !usbConfigured) { + // Nothing to do here (only CONNECTED, not yet CONFIGURED). + return; + } + // start tethering if we have a request pending if (usbConfigured && mRndisEnabled && mUsbTetherRequested) { tetherMatchingInterfaces( IControlsTethering.STATE_TETHERED, ConnectivityManager.TETHERING_USB); } + + // TODO: Figure out how to remove the need for this variable. mUsbTetherRequested = false; } }