diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 6b3575f7ec..3e97d24c29 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -6415,13 +6415,19 @@ public class ConnectivityService extends IConnectivityManager.Stub changes.addRematchedNetwork(new NetworkReassignment.NetworkBgStatePair(newNetwork, newNetwork.isBackgroundNetwork())); + final int score = newNetwork.getCurrentScore(); + if (VDBG || DDBG) log("rematching " + newNetwork.name()); final ArrayMap reassignedRequests = computeRequestReassignmentForNetwork(newNetwork); + NetworkCapabilities nc = newNetwork.networkCapabilities; + if (VDBG) log(" network has: " + nc); + // Find and migrate to this Network any NetworkRequests for // which this network is now the best. + final ArrayList removedRequests = new ArrayList<>(); for (final Map.Entry entry : reassignedRequests.entrySet()) { final NetworkRequestInfo nri = entry.getKey(); @@ -6435,6 +6441,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } previousSatisfier.removeRequest(nri.request.requestId); previousSatisfier.lingerRequest(nri.request, now, mLingerDelayMs); + removedRequests.add(previousSatisfier); } else { if (VDBG || DDBG) log(" accepting network in place of null"); } @@ -6501,6 +6508,17 @@ public class ConnectivityService extends IConnectivityManager.Stub // Have a new default network, release the transition wakelock in scheduleReleaseNetworkTransitionWakelock(); } + + if (!newNetwork.networkCapabilities.equalRequestableCapabilities(nc)) { + Slog.wtf(TAG, String.format( + "BUG: %s changed requestable capabilities during rematch: %s -> %s", + newNetwork.name(), nc, newNetwork.networkCapabilities)); + } + if (newNetwork.getCurrentScore() != score) { + Slog.wtf(TAG, String.format( + "BUG: %s changed score during rematch: %d -> %d", + newNetwork.name(), score, newNetwork.getCurrentScore())); + } } /**