Merge "Don't send onLinkPropertiesChanged after onLost for 464xlat."

This commit is contained in:
Lorenzo Colitti
2021-06-09 07:59:25 +00:00
committed by Gerrit Code Review
3 changed files with 6 additions and 12 deletions

View File

@@ -398,10 +398,10 @@ public class UpstreamNetworkMonitor {
// notifications (e.g. matching more than one of our callbacks).
//
// Also, it can happen that onLinkPropertiesChanged is called after
// onLost removed the state from mNetworkMap. This appears to be due
// to a bug in disconnectAndDestroyNetwork, which calls
// nai.clatd.update() after the onLost callbacks.
// TODO: fix the bug and make this method void.
// onLost removed the state from mNetworkMap. This is due to a bug
// in disconnectAndDestroyNetwork, which calls nai.clatd.update()
// after the onLost callbacks. This was fixed in S.
// TODO: make this method void when R is no longer supported.
return null;
}

View File

@@ -6299,8 +6299,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// there may not be a strict 1:1 correlation between the two.
private final NetIdManager mNetIdManager;
// NetworkAgentInfo keyed off its connecting messenger
// TODO - eval if we can reduce the number of lists/hashmaps/sparsearrays
// Tracks all NetworkAgents that are currently registered.
// NOTE: Only should be accessed on ConnectivityServiceThread, except dump().
private final ArraySet<NetworkAgentInfo> mNetworkAgentInfos = new ArraySet<>();
@@ -7452,7 +7451,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
public void handleUpdateLinkProperties(NetworkAgentInfo nai, LinkProperties newLp) {
ensureRunningOnConnectivityServiceThread();
if (getNetworkAgentInfoForNetId(nai.network.getNetId()) != nai) {
if (!mNetworkAgentInfos.contains(nai)) {
// Ignore updates for disconnected networks
return;
}

View File

@@ -8631,13 +8631,8 @@ public class ConnectivityServiceTest {
// Disconnect the network. clat is stopped and the network is destroyed.
mCellNetworkAgent.disconnect();
networkCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
// TODO: delete this spurious onLinkPropertiesChanged callback.
networkCallback.expectLinkPropertiesThat(mCellNetworkAgent,
lp -> lp.getStackedLinks().isEmpty());
networkCallback.assertNoCallback();
verify(mMockNetd).clatdStop(MOBILE_IFNAME);
verify(mMockNetd).networkRemoveInterface(cellNetId, CLAT_MOBILE_IFNAME);
assertRoutesRemoved(cellNetId, stackedDefault);
verify(mMockNetd).idletimerRemoveInterface(eq(MOBILE_IFNAME), anyInt(),
eq(Integer.toString(TRANSPORT_CELLULAR)));
verify(mMockNetd).networkDestroy(cellNetId);