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

Commit 2e2849a5 authored by Wink Saville's avatar Wink Saville Committed by Android (Google) Code Review
Browse files

Merge "Empty DC's apnList when the DC is free." into jb-dev

parents 72404a82 b44b13a3
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -996,9 +996,23 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
    }

    private boolean dataConnectionNotInUse(DataConnectionAc dcac) {
        if (DBG) log("dataConnectionNotInUse: check if dcac is inuse dc=" + dcac.dataConnection);
        for (ApnContext apnContext : mApnContexts.values()) {
            if (apnContext.getDataConnectionAc() == dcac) return false;
            if (apnContext.getDataConnectionAc() == dcac) {
                if (DBG) log("dataConnectionNotInUse: in use by apnContext=" + apnContext);
                return false;
            }
        }
        // TODO: Fix retry handling so free DataConnections have empty apnlists.
        // Probably move retry handling into DataConnections and reduce complexity
        // of DCT.
        for (ApnContext apnContext : dcac.getApnListSync()) {
            if (DBG) {
                log("dataConnectionNotInUse: removing apnContext=" + apnContext);
            }
            dcac.removeApnContextSync(apnContext);
        }
        if (DBG) log("dataConnectionNotInUse: not in use return true");
        return true;
    }

@@ -2131,14 +2145,14 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
    protected void onDisconnectDone(int connId, AsyncResult ar) {
        ApnContext apnContext = null;

        if(DBG) log("onDisconnectDone: EVENT_DISCONNECT_DONE connId=" + connId);
        if (ar.userObj instanceof ApnContext) {
            apnContext = (ApnContext) ar.userObj;
        } else {
            loge("Invalid ar in onDisconnectDone");
            loge("onDisconnectDone: Invalid ar in onDisconnectDone, ignore");
            return;
        }

        if(DBG) log("onDisconnectDone: EVENT_DISCONNECT_DONE apnContext=" + apnContext);
        apnContext.setState(State.IDLE);

        mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());