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

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

Merge "Fix broken data retry" into honeycomb-LTE

parents f483ed90 5ce6268f
Loading
Loading
Loading
Loading
+36 −29
Original line number Diff line number Diff line
@@ -927,6 +927,11 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
            return false;
        }

        // First, check to see if ApnContext already has DC.
        // This could happen if the retries are currently  engaged.
        dc = (GsmDataConnection)apnContext.getDataConnection();

        if (dc == null) {
            dc = findReadyDataConnection(apn);

            if (dc == null) {
@@ -958,6 +963,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
            apnContext.setDataConnectionAc(mDataConnectionAsyncChannels.get(dc.getDataConnectionId()));
            apnContext.setApnSetting(apn);
            apnContext.setDataConnection(dc);
        }

        Message msg = obtainMessage();
        msg.what = EVENT_DATA_SETUP_COMPLETE;
@@ -1655,6 +1661,12 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
                    }
                    apnContext.setState(State.FAILED);
                    mPhone.notifyDataConnection(Phone.REASON_APN_FAILED, apnContext.getApnType());

                    int refCount = releaseApnContext(apnContext, false);
                    if (DBG) {
                        log("onDataSetupComplete: permanent error apn=%s" + apnString +
                                                                            " refCount=" + refCount);
                    }
                } else {
                    if (DBG) log("onDataSetupComplete: Not all permanent failures, retry");
                    startDelayedRetry(cause, apnContext);
@@ -1667,11 +1679,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
                sendMessageDelayed(obtainMessage(EVENT_TRY_SETUP_DATA, apnContext),
                        APN_DELAY_MILLIS);
            }

            int refCount = releaseApnContext(apnContext, false);
            if (DBG) {
                log("onDataSetupComplete: error apn=%s" + apnString + " refCount=" + refCount);
            }
        }
    }