Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73abd72d authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Automerger Merge Worker
Browse files

Merge "Don't crash or wtf if the interface doesn't exist." am: 2bcaada7

Change-Id: I24ac0929e35329a843961e4740df6cec26e8eee2
parents c77718f6 2bcaada7
Loading
Loading
Loading
Loading
+13 −11
Original line number Original line Diff line number Diff line
@@ -1699,25 +1699,27 @@ public class IpClient extends StateMachine {
    class ClearingIpAddressesState extends State {
    class ClearingIpAddressesState extends State {
        @Override
        @Override
        public void enter() {
        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
            // 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.
            // properly ordered with other events, such as restoring the interface MTU on teardown.
            mInterfaceParams = mDependencies.getInterfaceParams(mInterfaceName);
            mInterfaceParams = mDependencies.getInterfaceParams(mInterfaceName);
            if (mInterfaceParams == null) {
            if (mInterfaceParams == null) {
                logError("Failed to find InterfaceParams for " + mInterfaceName);
                logError("Failed to find InterfaceParams for " + mInterfaceName);
                doImmediateProvisioningFailure(IpManagerEvent.ERROR_INTERFACE_NOT_FOUND);
                doImmediateProvisioningFailure(IpManagerEvent.ERROR_INTERFACE_NOT_FOUND);
                transitionTo(mStoppedState);
                deferMessage(obtainMessage(CMD_STOP));
                return;
                return;
            }
            }

            mLinkObserver.setInterfaceParams(mInterfaceParams);
            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);
            mCallback.setNeighborDiscoveryOffload(true);
        }
        }


@@ -1752,7 +1754,7 @@ public class IpClient extends StateMachine {
        }
        }


        private boolean readyToProceed() {
        private boolean readyToProceed() {
            return (!mLinkProperties.hasIpv4Address() && !mLinkProperties.hasGlobalIpv6Address());
            return !mLinkProperties.hasIpv4Address() && !mLinkProperties.hasGlobalIpv6Address();
        }
        }
    }
    }