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

Commit 17aa56ec authored by Shareef Ali's avatar Shareef Ali Committed by Gerrit Code Review
Browse files

Telephony: DcTracker: Fix CDMA APN Data issues.

Fixes Data on CDMA when APN Match cannot be found
Original commit: cd2585eb

PS2: Fixed small derp that was breaking build
PS3: Change author name to original author

Change-Id: Iad7737635686fdb9d7d35099d3cf615eb47a3dfd
parent 3ec914cf
Loading
Loading
Loading
Loading
+31 −6
Original line number Diff line number Diff line
@@ -640,6 +640,7 @@ public final class DcTracker extends DcTrackerBase {
    }

    private boolean trySetupData(ApnContext apnContext) {
        boolean retValue = false;
        if (DBG) {
            log("trySetupData for type:" + apnContext.getApnType() +
                    " due to " + apnContext.getReason() + " apnContext=" + apnContext);
@@ -670,10 +671,13 @@ public final class DcTracker extends DcTrackerBase {
                ArrayList<ApnSetting> waitingApns = buildWaitingApns(apnContext.getApnType(),
                        radioTech);
                if (waitingApns.isEmpty()) {
                    notifyOffApnsOfAvailability(apnContext.getReason());
                    retValue = setupData(apnContext, radioTech);
                    if(!retValue) {
                        notifyNoData(DcFailCause.MISSING_UNKNOWN_APN, apnContext);
                    }
                    notifyOffApnsOfAvailability(apnContext.getReason());
                    if (DBG) log("trySetupData: X No APN found retValue=false");
                    return false;
                    return retValue;
                } else {
                    apnContext.setWaitingApns(waitingApns);
                    if (DBG) {
@@ -687,7 +691,7 @@ public final class DcTracker extends DcTrackerBase {
                log("trySetupData: call setupData, waitingApns : "
                        + apnListToString(apnContext.getWaitingApns()));
            }
            boolean retValue = setupData(apnContext, radioTech);
            retValue = setupData(apnContext, radioTech);
            notifyOffApnsOfAvailability(apnContext.getReason());

            if (DBG) log("trySetupData: X retValue=" + retValue);
@@ -1028,9 +1032,30 @@ public final class DcTracker extends DcTrackerBase {
        int profileId = getApnProfileID(apnContext.getApnType());
        apnSetting = apnContext.getNextWaitingApn();
        if (apnSetting == null) {
            if(PhoneConstants.PHONE_TYPE_CDMA==mPhone.getPhoneType()) {
                String[] mDunApnTypes = { PhoneConstants.APN_TYPE_DUN };
                final int mDefaultApnId = DctConstants.APN_DEFAULT_ID;
                final String[] mDefaultApnTypes = {
                    PhoneConstants.APN_TYPE_DEFAULT,
                    PhoneConstants.APN_TYPE_MMS,
                    PhoneConstants.APN_TYPE_HIPRI };
                String[] types;
                int apnId;
                if (mRequestedApnType.equals(PhoneConstants.APN_TYPE_DUN)) {
                    types = mDunApnTypes;
                    apnId = DctConstants.APN_DUN_ID;
                } else {
                    types = mDefaultApnTypes;
                    apnId = mDefaultApnId;
                }
                apnSetting = new ApnSetting(apnId, "", "", "", "", "", "", "", "", "",
                                            "", 0, types, "IP", "IP", true, 0);
                if (DBG) log("setupData: CDMA detected and apnSetting == null, use stubbed CDMA APN setting= " + apnSetting);
            } else {
                if (DBG) log("setupData: return for no apn found!");
                return false;
            }
        }

        dcac = checkForCompatibleConnectedApnContext(apnContext);
        if (dcac != null) {