ethernet: fix receiving NetworkOffer callbacks on stale object

unregisterNetworkOffer() does not execute synchronously, so it is
possible that NetworkOffer callbacks are received after the offer was
unregistered.

Test: atest EthernetManagerTest && atest EthernetNetworkFactoryTest
Bug: 171872016
Change-Id: I2c50b01176e4968c31f83148f1831b55f8b06908
This commit is contained in:
Patrick Rohr
2022-07-11 14:20:50 -07:00
parent 1c37d3e7b0
commit 7c4e2a918c
2 changed files with 32 additions and 3 deletions

View File

@@ -726,4 +726,16 @@ public class EthernetNetworkFactoryTest {
triggerOnProvisioningSuccess();
verifyRestart(initialIpConfig);
}
@Test
public void testOnNetworkNeededOnStaleNetworkOffer() throws Exception {
initEthernetNetworkFactory();
createAndVerifyProvisionedInterface(TEST_IFACE);
mNetFactory.updateInterfaceLinkState(TEST_IFACE, false, null);
verify(mNetworkProvider).unregisterNetworkOffer(mNetworkOfferCallback);
// It is possible that even after a network offer is unregistered, CS still sends it
// onNetworkNeeded() callbacks.
mNetworkOfferCallback.onNetworkNeeded(createDefaultRequest());
verify(mIpClient, never()).startProvisioning(any());
}
}