Merge "Check NetworkAgentInfo Map Before Destroying Network"

This commit is contained in:
Chalard Jean
2021-09-29 06:03:56 +00:00
committed by Gerrit Code Review

View File

@@ -3848,9 +3848,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void handleNetworkAgentDisconnected(Message msg) { private void handleNetworkAgentDisconnected(Message msg) {
NetworkAgentInfo nai = (NetworkAgentInfo) msg.obj; NetworkAgentInfo nai = (NetworkAgentInfo) msg.obj;
if (mNetworkAgentInfos.contains(nai)) { disconnectAndDestroyNetwork(nai);
disconnectAndDestroyNetwork(nai);
}
} }
// Destroys a network, remove references to it from the internal state managed by // Destroys a network, remove references to it from the internal state managed by
@@ -3858,6 +3856,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
// Must be called on the Handler thread. // Must be called on the Handler thread.
private void disconnectAndDestroyNetwork(NetworkAgentInfo nai) { private void disconnectAndDestroyNetwork(NetworkAgentInfo nai) {
ensureRunningOnConnectivityServiceThread(); ensureRunningOnConnectivityServiceThread();
if (!mNetworkAgentInfos.contains(nai)) return;
if (DBG) { if (DBG) {
log(nai.toShortString() + " disconnected, was satisfying " + nai.numNetworkRequests()); log(nai.toShortString() + " disconnected, was satisfying " + nai.numNetworkRequests());
} }
@@ -3943,7 +3944,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
try { try {
mNetd.networkSetPermissionForNetwork(nai.network.netId, INetd.PERMISSION_SYSTEM); mNetd.networkSetPermissionForNetwork(nai.network.netId, INetd.PERMISSION_SYSTEM);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.d(TAG, "Error marking network restricted during teardown: " + e); Log.d(TAG, "Error marking network restricted during teardown: ", e);
} }
mHandler.postDelayed(() -> destroyNetwork(nai), nai.teardownDelayMs); mHandler.postDelayed(() -> destroyNetwork(nai), nai.teardownDelayMs);
} }