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

Commit 355dbae6 authored by Erik Kline's avatar Erik Kline Committed by Gerrit Code Review
Browse files

Merge "Fix dead lock in Tethering state machine"

parents dff6c5c3 977aad5a
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -950,6 +950,8 @@ public class Tethering extends BaseNetworkObserver implements IControlsTethering
        // Events from NetworkCallbacks that we process on the master state
        // machine thread on behalf of the UpstreamNetworkMonitor.
        static final int EVENT_UPSTREAM_CALLBACK                = BASE_MASTER + 5;
        // we treated the error and want now to clear it
        static final int CMD_CLEAR_ERROR                        = BASE_MASTER + 6;

        private State mInitialState;
        private State mTetherModeAliveState;
@@ -1496,6 +1498,10 @@ public class Tethering extends BaseNetworkObserver implements IControlsTethering
                        TetherInterfaceStateMachine who = (TetherInterfaceStateMachine)message.obj;
                        who.sendMessage(mErrorNotification);
                        break;
                    case CMD_CLEAR_ERROR:
                        mErrorNotification = ConnectivityManager.TETHER_ERROR_NO_ERROR;
                        transitionTo(mInitialState);
                        break;
                    default:
                       retValue = false;
                }
@@ -1640,6 +1646,12 @@ public class Tethering extends BaseNetworkObserver implements IControlsTethering
            // Not really very much we can do here.
        }

        // If TetherMasterSM is in ErrorState, TetherMasterSM stays there.
        // Thus we give a chance for TetherMasterSM to recover to InitialState
        // by sending CMD_CLEAR_ERROR
        if (error == ConnectivityManager.TETHER_ERROR_MASTER_ERROR) {
            mTetherMasterSM.sendMessage(TetherMasterSM.CMD_CLEAR_ERROR, who);
        }
        switch (state) {
            case IControlsTethering.STATE_UNAVAILABLE:
            case IControlsTethering.STATE_AVAILABLE:
+2 −1
Original line number Diff line number Diff line
@@ -167,7 +167,8 @@ public class TetherInterfaceStateMachine extends StateMachine {
    private void maybeLogMessage(State state, int what) {
        if (DBG) {
            Log.d(TAG, state.getName() + " got " +
                    sMagicDecoderRing.get(what, Integer.toString(what)));
                    sMagicDecoderRing.get(what, Integer.toString(what)) + ", Iface = " +
                    mIfaceName);
        }
    }