From 09f5803344ed5aaba79bb5155da95cccaeab4988 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Fri, 16 May 2014 08:54:07 -0700 Subject: [PATCH] Clean up when we switch networks. Need to unhitch mNetworkForRequestId when a network is no longer satisfying a request. Change-Id: I3b3cde7dd92ec87a76ae7a0825ad22e892fa8fd5 --- core/java/android/net/NetworkAgent.java | 4 ++++ .../core/java/com/android/server/ConnectivityService.java | 1 + 2 files changed, 5 insertions(+) diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java index 4b853987c9..c2b06a297f 100644 --- a/core/java/android/net/NetworkAgent.java +++ b/core/java/android/net/NetworkAgent.java @@ -66,6 +66,7 @@ public abstract class NetworkAgent extends Handler { private AsyncChannel mAsyncChannel; private final String LOG_TAG; private static final boolean DBG = true; + private static final boolean VDBG = true; // TODO - this class shouldn't cache data or it runs the risk of getting out of sync // Make the API require each of these when any is updated so we have the data we need, // without caching. @@ -266,11 +267,14 @@ public abstract class NetworkAgent extends Handler { */ private void evalScores() { if (mConnectionRequested) { + if (VDBG) log("evalScores - already trying - size=" + mNetworkRequests.size()); // already trying return; } + if (VDBG) log("evalScores!"); for (int i=0; i < mNetworkRequests.size(); i++) { int score = mNetworkRequests.valueAt(i).score; + if (VDBG) log(" checking request Min " + score + " vs my score " + mNetworkScore); if (score < mNetworkScore) { // have a request that has a lower scored network servicing it // (or no network) than we could provide, so lets connect! diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 0708e55d4a..3f4f295aaf 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -3216,6 +3216,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { // tell the network currently servicing this that it's no longer interested NetworkAgentInfo affectedNetwork = mNetworkForRequestId.get(nri.request.requestId); if (affectedNetwork != null) { + mNetworkForRequestId.remove(nri.request.requestId); affectedNetwork.networkRequests.remove(nri.request.requestId); if (VDBG) { log(" Removing from current network " + affectedNetwork.name() + ", leaving " +