From 2b1a61cf4bc1f8d4d103928e18b81f5105d3f445 Mon Sep 17 00:00:00 2001 From: Cody Kesting Date: Mon, 30 Mar 2020 12:43:49 -0700 Subject: [PATCH] Simplify unregister logic for Connectivity Diagnostics callbacks. ConnectivityService is updated to simplify the logic for unregistering ConnectivityDiagnosticsCallback instances. This change removes the given callback from ConnectivityService's data structure. If the callback was not registered with ConnectivityService, it is logged and the function exits; else, the unregister() operation continues. Bug: 150867635 Test: atest FrameworksNetTests Change-Id: I9096969a1bf33da72b117f5bbc88257df805e688 --- .../core/java/com/android/server/ConnectivityService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 916a68d398..0514532e45 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -7853,12 +7853,14 @@ public class ConnectivityService extends IConnectivityManager.Stub ensureRunningOnConnectivityServiceThread(); final IBinder iCb = cb.asBinder(); - if (!mConnectivityDiagnosticsCallbacks.containsKey(iCb)) { + final ConnectivityDiagnosticsCallbackInfo cbInfo = + mConnectivityDiagnosticsCallbacks.remove(iCb); + if (cbInfo == null) { if (VDBG) log("Removing diagnostics callback that is not currently registered"); return; } - final NetworkRequestInfo nri = mConnectivityDiagnosticsCallbacks.get(iCb).mRequestInfo; + final NetworkRequestInfo nri = cbInfo.mRequestInfo; if (uid != nri.mUid) { if (VDBG) loge("Different uid than registrant attempting to unregister cb"); @@ -7870,8 +7872,6 @@ public class ConnectivityService extends IConnectivityManager.Stub // enforceRequestCountLimit(). decrementNetworkRequestPerUidCount(nri); - final ConnectivityDiagnosticsCallbackInfo cbInfo = - mConnectivityDiagnosticsCallbacks.remove(iCb); iCb.unlinkToDeath(cbInfo, 0); }