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

Commit 5ce6268f authored by Kazuhiro Ondo's avatar Kazuhiro Ondo Committed by Wink Saville
Browse files

Fix broken data retry

Change I2b737efa6092ad1254c8dc25840ec429f5c6e882 brought side
effect that retry count is reset at every setup.

Change-Id: I6f20d2e82110b2873ff5acbb60a747fd11c09c60
parent f89ea7a5
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);
            }
        }
    }