From 573a0354c5752769366b3365eb1be4adc569d096 Mon Sep 17 00:00:00 2001 From: Paul Jensen Date: Thu, 8 Jan 2015 10:49:34 -0500 Subject: Remember to cancel lingering when a network again satsifies a NetworkRequest. When WiFi's score drops and then comes back up we would previously linger WiFi but forget to cancel the linger timeout, so 30s later WiFi would unexpectedly tear down. This was not completely fixed in 0cc1732. bug:18826162 Change-Id: I7bb4b99ec969099e9815f46d4c09253be71a29be --- services/core/java/com/android/server/ConnectivityService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 766e4c766ef9..0f8fd05a033f 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2069,6 +2069,9 @@ public class ConnectivityService extends IConnectivityManager.Stub // may trigger a re-evaluation of the network. private void unlinger(NetworkAgentInfo nai) { if (VDBG) log("Canceling linger of " + nai.name()); + // If network has never been validated, it cannot have been lingered, so don't bother + // needlessly triggering a re-evaluation. + if (!nai.everValidated) return; nai.networkLingered.clear(); nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED); } @@ -4034,6 +4037,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } else { if (DBG) log(" accepting network in place of null"); } + unlinger(newNetwork); mNetworkForRequestId.put(nri.request.requestId, newNetwork); newNetwork.addRequest(nri.request); keep = true; -- cgit v1.2.3-59-g8ed1b