summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chalard Jean <jchalard@google.com> 2021-03-24 10:47:25 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-03-24 10:47:25 +0000
commitc2093d9dd45bb94789f77337cf4c93a3059b85e0 (patch)
treef8fca41f437f3e69ab619f91544bba492df5e48a
parentb99a0bc491de62de4fefdb59b7fd62bff8c97fe6 (diff)
parent31acbce474c0b83abfeb622572da105a273a1aca (diff)
Merge "[NS04.7] Reinstate a necessary change" into sc-dev
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 4c6e06f70277..67cd6c388f4d 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -6467,6 +6467,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
}
+ private boolean isNetworkProviderWithIdRegistered(final int providerId) {
+ for (final NetworkProviderInfo npi : mNetworkProviderInfos.values()) {
+ if (npi.providerId == providerId) return true;
+ }
+ return false;
+ }
+
/**
* Register or update a network offer.
* @param newOffer The new offer. If the callback member is the same as an existing
@@ -6474,7 +6481,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
*/
private void handleRegisterNetworkOffer(@NonNull final NetworkOffer newOffer) {
ensureRunningOnConnectivityServiceThread();
-
+ if (!isNetworkProviderWithIdRegistered(newOffer.providerId)) {
+ // This may actually happen if a provider updates its score or registers and then
+ // immediately unregisters. The offer would still be in the handler queue, but the
+ // provider would have been removed.
+ if (DBG) log("Received offer from an unregistered provider");
+ return;
+ }
final NetworkOfferInfo existingOffer = findNetworkOfferInfoByCallback(newOffer.callback);
if (null != existingOffer) {
handleUnregisterNetworkOffer(existingOffer);