diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2020-04-28 00:59:57 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-04-28 00:59:57 +0000 |
commit | 96be0f517e3559e638536c35756eeeb44255a448 (patch) | |
tree | 48d7f7da5d9c2fedfa1f1f205febce8926e74823 /src/android/net/ip/IpClient.java | |
parent | a4e8c80972bf10486f4916d31c0163b025cb76db (diff) | |
parent | 3a9c1bafbda7a00ad1fae7803bd505c4a255792b (diff) |
Don't crash or wtf if the interface doesn't exist. am: 1725a2cd92 am: 3a9c1bafbd
Change-Id: I104a77fc2ece1f94ee8500e902492e1483878f12
Diffstat (limited to 'src/android/net/ip/IpClient.java')
-rw-r--r-- | src/android/net/ip/IpClient.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/android/net/ip/IpClient.java b/src/android/net/ip/IpClient.java index 86d3ba7..6021c6a 100644 --- a/src/android/net/ip/IpClient.java +++ b/src/android/net/ip/IpClient.java @@ -1699,25 +1699,27 @@ public class IpClient extends StateMachine { class ClearingIpAddressesState extends State { @Override public void enter() { - if (readyToProceed()) { - deferMessage(obtainMessage(CMD_ADDRESSES_CLEARED)); - } else { - // Clear all IPv4 and IPv6 before proceeding to RunningState. - // Clean up any leftover state from an abnormal exit from - // tethering or during an IpClient restart. - stopAllIP(); - } - // Ensure that interface parameters are fetched on the handler thread so they are // properly ordered with other events, such as restoring the interface MTU on teardown. mInterfaceParams = mDependencies.getInterfaceParams(mInterfaceName); if (mInterfaceParams == null) { logError("Failed to find InterfaceParams for " + mInterfaceName); doImmediateProvisioningFailure(IpManagerEvent.ERROR_INTERFACE_NOT_FOUND); - transitionTo(mStoppedState); + deferMessage(obtainMessage(CMD_STOP)); return; } + mLinkObserver.setInterfaceParams(mInterfaceParams); + + if (readyToProceed()) { + deferMessage(obtainMessage(CMD_ADDRESSES_CLEARED)); + } else { + // Clear all IPv4 and IPv6 before proceeding to RunningState. + // Clean up any leftover state from an abnormal exit from + // tethering or during an IpClient restart. + stopAllIP(); + } + mCallback.setNeighborDiscoveryOffload(true); } @@ -1752,7 +1754,7 @@ public class IpClient extends StateMachine { } private boolean readyToProceed() { - return (!mLinkProperties.hasIpv4Address() && !mLinkProperties.hasGlobalIpv6Address()); + return !mLinkProperties.hasIpv4Address() && !mLinkProperties.hasGlobalIpv6Address(); } } |