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 d5f5339.
bug:18826162
Change-Id: I7bb4b99ec969099e9815f46d4c09253be71a29be
This commit is contained in:
@@ -2069,6 +2069,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
// may trigger a re-evaluation of the network.
|
// may trigger a re-evaluation of the network.
|
||||||
private void unlinger(NetworkAgentInfo nai) {
|
private void unlinger(NetworkAgentInfo nai) {
|
||||||
if (VDBG) log("Canceling linger of " + nai.name());
|
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.networkLingered.clear();
|
||||||
nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED);
|
nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED);
|
||||||
}
|
}
|
||||||
@@ -4034,6 +4037,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
} else {
|
} else {
|
||||||
if (DBG) log(" accepting network in place of null");
|
if (DBG) log(" accepting network in place of null");
|
||||||
}
|
}
|
||||||
|
unlinger(newNetwork);
|
||||||
mNetworkForRequestId.put(nri.request.requestId, newNetwork);
|
mNetworkForRequestId.put(nri.request.requestId, newNetwork);
|
||||||
newNetwork.addRequest(nri.request);
|
newNetwork.addRequest(nri.request);
|
||||||
keep = true;
|
keep = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user