summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/android/net/ip/IpClient.java24
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();
}
}