Merge "Only pass the NRI for removal in NRI#binderDied" am: 24fa1d7a8f am: 48f3878591 am: 4839bf0d97
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1741953
Change-Id: I3520034c9edc23bef8cf57724b5e9b8f61043265
diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java
index b040952..9e2acc9 100644
--- a/service/src/com/android/server/ConnectivityService.java
+++ b/service/src/com/android/server/ConnectivityService.java
@@ -4229,13 +4229,16 @@
private void handleRemoveNetworkRequest(@NonNull final NetworkRequestInfo nri) {
ensureRunningOnConnectivityServiceThread();
- nri.unlinkDeathRecipient();
for (final NetworkRequest req : nri.mRequests) {
- mNetworkRequests.remove(req);
+ if (null == mNetworkRequests.remove(req)) {
+ logw("Attempted removal of untracked request " + req + " for nri " + nri);
+ continue;
+ }
if (req.isListen()) {
removeListenRequestFromNetworks(req);
}
}
+ nri.unlinkDeathRecipient();
if (mDefaultNetworkRequests.remove(nri)) {
// If this request was one of the defaults, then the UID rules need to be updated
// WARNING : if the app(s) for which this network request is the default are doing
@@ -5913,8 +5916,8 @@
@Override
public void binderDied() {
log("ConnectivityService NetworkRequestInfo binderDied(" +
- mRequests + ", " + mBinder + ")");
- releaseNetworkRequests(mRequests);
+ "uid/pid:" + mUid + "/" + mPid + ", " + mBinder + ")");
+ mHandler.post(() -> handleRemoveNetworkRequest(this));
}
@Override
@@ -6345,12 +6348,6 @@
return mNextNetworkProviderId.getAndIncrement();
}
- private void releaseNetworkRequests(List<NetworkRequest> networkRequests) {
- for (int i = 0; i < networkRequests.size(); i++) {
- releaseNetworkRequest(networkRequests.get(i));
- }
- }
-
@Override
public void releaseNetworkRequest(NetworkRequest networkRequest) {
ensureNetworkRequestHasType(networkRequest);