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

Commit bc42667e authored by Wink Saville's avatar Wink Saville Committed by Android Git Automerger
Browse files

am 97978662: Restart, cleanup or retry inactve connections.

* commit '97978662':
  Restart, cleanup or retry inactve connections.
parents 585e9609 97978662
Loading
Loading
Loading
Loading
+33 −5
Original line number Diff line number Diff line
@@ -1213,13 +1213,29 @@ public final class DataConnection extends StateMachine {
                            if (DBG) {
                                log("DcActivatingState: ERR_RilError "
                                        + " delay=" + delay
                                        + " isRetryNeeded=" + mRetryManager.isRetryNeeded());
                            }
                            if ((delay >= 0) && (result.mFailCause.isPermanentFail() == false)) {
                                        + " isRetryNeeded=" + mRetryManager.isRetryNeeded()
                                        + " result=" + result
                                        + " result.isRestartRadioFail=" +
                                                result.mFailCause.isRestartRadioFail()
                                        + " result.isPermanentFail=" +
                                                result.mFailCause.isPermanentFail());
                            }
                            if (result.mFailCause.isRestartRadioFail()) {
                                if (DBG) log("DcActivatingState: ERR_RilError restart radio");
                                mDct.sendRestartRadio();
                                mInactiveState.setEnterNotificationParams(cp, result.mFailCause);
                                transitionTo(mInactiveState);
                            } else if (result.mFailCause.isPermanentFail()) {
                                if (DBG) log("DcActivatingState: ERR_RilError perm error");
                                mInactiveState.setEnterNotificationParams(cp, result.mFailCause);
                                transitionTo(mInactiveState);
                            } else if (delay >= 0) {
                                if (DBG) log("DcActivatingState: ERR_RilError retry");
                                mDcRetryAlarmController.startRetryAlarm(EVENT_RETRY_CONNECTION,
                                                            mTag, delay);
                                transitionTo(mRetryingState);
                            } else {
                                if (DBG) log("DcActivatingState: ERR_RilError no retry");
                                mInactiveState.setEnterNotificationParams(cp, result.mFailCause);
                                transitionTo(mInactiveState);
                            }
@@ -1259,13 +1275,25 @@ public final class DataConnection extends StateMachine {
                                    + " isRetryNeeded=" + mRetryManager.isRetryNeeded()
                                    + " dc=" + DataConnection.this);
                        }
                        if (mRetryManager.isRetryNeeded() && (cause.isPermanentFail() == false)) {
                        if (cause.isRestartRadioFail()) {
                            if (DBG) {
                                log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE"
                                        + " restart radio");
                            }
                            mDct.sendRestartRadio();
                            mInactiveState.setEnterNotificationParams(cp, cause);
                            transitionTo(mInactiveState);
                        } else if (cause.isPermanentFail()) {
                            if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE perm er");
                            mInactiveState.setEnterNotificationParams(cp, cause);
                            transitionTo(mInactiveState);
                        } else if ((retryDelay >= 0) && (mRetryManager.isRetryNeeded())) {
                            if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE retry");
                            mDcRetryAlarmController.startRetryAlarm(EVENT_RETRY_CONNECTION, mTag,
                                                            retryDelay);
                            transitionTo(mRetryingState);
                        } else {
                            // Transition to inactive but send notifications after
                            // we've entered the mInactive state.
                            if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE no retry");
                            mInactiveState.setEnterNotificationParams(cp, cause);
                            transitionTo(mInactiveState);
                        }
+12 −2
Original line number Diff line number Diff line
@@ -224,8 +224,18 @@ class DcController extends StateMachine {
                    if (DBG) log("onDataStateChanged: Found ConnId=" + newState.cid
                            + " newState=" + newState.toString());
                    if (newState.active == DATA_CONNECTION_ACTIVE_PH_LINK_INACTIVE) {
                        DcFailCause failCause = DcFailCause.fromInt(newState.status);
                        if (DBG) log("onDataStateChanged: inactive failCause=" + failCause);
                        if (failCause.isRestartRadioFail()) {
                            if (DBG) log("onDataStateChanged: X restart radio");
                            mDct.sendRestartRadio();
                        } else if (failCause.isPermanentFail()) {
                            if (DBG) log("onDataStateChanged: inactive, add to cleanup list");
                            apnsToCleanup.addAll(dc.mApnContexts);
                        } else {
                            if (DBG) log("onDataStateChanged: inactive, add to retry list");
                            dcsToRetry.add(dc);
                        }
                    } else {
                        // Its active so update the DataConnections link properties
                        UpdateLinkPropertyResult result = dc.updateLinkProperty(newState);
+6 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ public enum DcFailCause {
    SERVICE_OPTION_NOT_SUBSCRIBED(0x21),    /* no retry */
    SERVICE_OPTION_OUT_OF_ORDER(0x22),
    NSAPI_IN_USE(0x23),                     /* no retry */
    REGULAR_DEACTIVATION(0x24),             /* Restart radio */
    ONLY_IPV4_ALLOWED(0x32),                /* no retry */
    ONLY_IPV6_ALLOWED(0x33),                /* no retry */
    ONLY_SINGLE_BEARER_ALLOWED(0x34),
@@ -78,6 +79,11 @@ public enum DcFailCause {
        return mErrorCode;
    }

    /** Radio has failed such that the radio should be restarted */
    public boolean isRestartRadioFail() {
        return (this == REGULAR_DEACTIVATION);
    }

    public boolean isPermanentFail() {
        return (this == OPERATOR_BARRED) || (this == MISSING_UNKNOWN_APN) ||
               (this == UNKNOWN_PDP_ADDRESS_TYPE) || (this == USER_AUTHENTICATION) ||
+10 −0
Original line number Diff line number Diff line
@@ -779,6 +779,10 @@ public abstract class DcTrackerBase extends Handler {
                onUpdateIcc();
                break;
            }
            case DctConstants.EVENT_RESTART_RADIO: {
                restartRadio();
                break;
            }
            default:
                Rlog.e("DATA", "Unidentified event msg=" + msg);
                break;
@@ -1505,6 +1509,12 @@ public abstract class DcTrackerBase extends Handler {
        sendMessage(msg);
    }

    void sendRestartRadio() {
        if (DBG)log("sendRestartRadio:");
        Message msg = obtainMessage(DctConstants.EVENT_RESTART_RADIO);
        sendMessage(msg);
    }

    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("DataConnectionTrackerBase:");
        pw.println(" RADIO_TESTS=" + RADIO_TESTS);