diff options
Diffstat (limited to 'service/java/com/android/server/wifi/WifiNetworkFactory.java')
-rw-r--r-- | service/java/com/android/server/wifi/WifiNetworkFactory.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java index c1b7dc347..a890c3ad9 100644 --- a/service/java/com/android/server/wifi/WifiNetworkFactory.java +++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java @@ -137,6 +137,8 @@ public class WifiNetworkFactory extends NetworkFactory { private boolean mPeriodicScanTimerSet = false; private boolean mConnectionTimeoutSet = false; private boolean mIsPeriodicScanPaused = false; + // We sent a new connection request and are waiting for connection success. + private boolean mPendingConnectionSuccess = false; private boolean mWifiEnabled = false; /** * Indicates that we have new data to serialize. @@ -752,6 +754,8 @@ public class WifiNetworkFactory extends NetworkFactory { // Trigger connection to the network. connectToNetwork(networkToConnect); + // Triggered connection to network, now wait for the connection status. + mPendingConnectionSuccess = true; } private void handleConnectToNetworkUserSelection(WifiConfiguration network) { @@ -800,7 +804,10 @@ public class WifiNetworkFactory extends NetworkFactory { * Invoked by {@link ClientModeImpl} on successful connection to a network. */ private void handleNetworkConnectionSuccess(@NonNull WifiConfiguration connectedNetwork) { - if (mUserSelectedNetwork == null || connectedNetwork == null) return; + if (mUserSelectedNetwork == null || connectedNetwork == null + || !mPendingConnectionSuccess) { + return; + } if (!isUserSelectedNetwork(connectedNetwork)) { Log.w(TAG, "Connected to unknown network " + connectedNetwork + ". Ignoring..."); return; @@ -823,7 +830,9 @@ public class WifiNetworkFactory extends NetworkFactory { * Invoked by {@link ClientModeImpl} on failure to connect to a network. */ private void handleNetworkConnectionFailure(@NonNull WifiConfiguration failedNetwork) { - if (mUserSelectedNetwork == null || failedNetwork == null) return; + if (mUserSelectedNetwork == null || failedNetwork == null || !mPendingConnectionSuccess) { + return; + } if (!isUserSelectedNetwork(failedNetwork)) { Log.w(TAG, "Connection failed to unknown network " + failedNetwork + ". Ignoring..."); return; @@ -908,6 +917,7 @@ public class WifiNetworkFactory extends NetworkFactory { mUserSelectedNetworkConnectRetryCount = 0; mIsPeriodicScanPaused = false; mActiveMatchedScanResults = null; + mPendingConnectionSuccess = false; // Cancel periodic scan, connection timeout alarm. cancelPeriodicScans(); cancelConnectionTimeout(); @@ -937,6 +947,7 @@ public class WifiNetworkFactory extends NetworkFactory { mConnectedSpecificNetworkRequestSpecifier = mActiveSpecificNetworkRequestSpecifier; mActiveSpecificNetworkRequest = null; mActiveSpecificNetworkRequestSpecifier = null; + mPendingConnectionSuccess = false; // Cancel connection timeout alarm. cancelConnectionTimeout(); } |