Merge "Fix dead lock in Tethering state machine"
am: 355dbae680
Change-Id: Idd08726f3eeebba49a9ad909464377af67600d30
This commit is contained in:
@@ -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;
|
||||
@@ -1491,6 +1493,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;
|
||||
}
|
||||
@@ -1635,6 +1641,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:
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user