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

Commit 4a9cf1fa authored by Muhammed Siju's avatar Muhammed Siju Committed by Linux Build Service Account
Browse files

Fix data call issue for single pdn case.

When a higher priority apncontext is scheduled for retry, default
data cannot be setup if only single pdn is allowed. If the higher
priority apncontext is later cleaned up before the retry alarm expires,
default data is never re established.
To fix this, try setup data on connectable apns after an apncontext
is cleaned up.

Change-Id: I80e97f6d862ef27e0237db332280e7296d9eebe9
CRs-Fixed: 715866
parent 57cf1b2b
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1397,12 +1397,30 @@ public final class DcTracker extends DcTrackerBase {
        if (dcac != null) {
            cancelReconnectAlarm(apnContext);
        }

        setupDataForSinglePdnArbitration(apnContext.getReason());

        if (DBG) {
            log("cleanUpConnection: X tearDown=" + tearDown + " reason=" + apnContext.getReason() +
                    " apnContext=" + apnContext + " dcac=" + apnContext.getDcAc());
        }
    }

    protected void setupDataForSinglePdnArbitration(String reason) {
        // In single pdn case, if a higher priority call which was scheduled for retry gets
        // cleaned up due to say apn disabled, we need to try setup data on connectable apns
        // as there won't be any EVENT_DISCONNECT_DONE call back.
        if(DBG) {
            log("setupDataForSinglePdn: reason = " + reason
                    + " isDisconnected = " + isDisconnected());
        }
        if (isOnlySingleDcAllowed(mPhone.getServiceState().getRilDataRadioTechnology())
                && isDisconnected()
                && !Phone.REASON_SINGLE_PDN_ARBITRATION.equals(reason)) {
            setupDataOnConnectableApns(Phone.REASON_SINGLE_PDN_ARBITRATION);
        }
    }

    /**
     * Determine if DUN connection is special and we need to teardown on start/stop
     */