diff options
author | Jaikumar Ganesh <jaikumar@google.com> | 2009-06-12 12:14:08 -0700 |
---|---|---|
committer | Jaikumar Ganesh <jaikumar@google.com> | 2009-06-12 12:14:08 -0700 |
commit | bbf7c00e06c0f6f39e26f7fdedbc7105b2f5c415 (patch) | |
tree | 8ad5f31abcb75d8b1b6d438e5fa45797d462459d | |
parent | e8939bb8f1453b44788d4475a8263082d858e533 (diff) | |
download | frameworks_base-bbf7c00e06c0f6f39e26f7fdedbc7105b2f5c415.zip frameworks_base-bbf7c00e06c0f6f39e26f7fdedbc7105b2f5c415.tar.gz frameworks_base-bbf7c00e06c0f6f39e26f7fdedbc7105b2f5c415.tar.bz2 |
Fix data connection issues.
a)Fix cleanup connection being called twice when switching to wifi.
b) Reset the reconnect timer when voice call ends and APN is changed.
-rw-r--r-- | telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java | 19 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java | 21 |
2 files changed, 10 insertions, 30 deletions
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 42f8fac..c922cec 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -404,6 +404,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { mReconnectIntent = null; } + setState(State.DISCONNECTING); + for (DataConnection connBase : dataConnectionList) { CdmaDataConnection conn = (CdmaDataConnection) connBase; @@ -419,24 +421,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { stopNetStatPoll(); - /* - * If we've been asked to tear down the connection, - * set the state to DISCONNECTING. However, there's - * a race that can occur if for some reason we were - * already in the IDLE state. In that case, the call - * to conn.disconnect() above will immediately post - * a message to the handler thread that the disconnect - * is done, and if the handler runs before the code - * below does, the handler will have set the state to - * IDLE before the code below runs. If we didn't check - * for that, future calls to trySetupData would fail, - * and we would never get out of the DISCONNECTING state. - */ if (!tearDown) { setState(State.IDLE); phone.notifyDataConnection(reason); - } else if (state != State.IDLE) { - setState(State.DISCONNECTING); } } @@ -811,6 +798,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { resetPollStats(); } } else { + // reset reconnect timer + nextReconnectDelay = RECONNECT_DELAY_INITIAL_MILLIS; // in case data setup was attempted when we were on a voice call trySetupData(Phone.REASON_VOICE_CALL_ENDED); } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 270f78b..71af406 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -636,6 +636,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { mReconnectIntent = null; } + setState(State.DISCONNECTING); + for (DataConnection conn : pdpList) { PdpConnection pdp = (PdpConnection) conn; if (tearDown) { @@ -647,25 +649,10 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } stopNetStatPoll(); - /* - * If we've been asked to tear down the connection, - * set the state to DISCONNECTING. However, there's - * a race that can occur if for some reason we were - * already in the IDLE state. In that case, the call - * to pdp.disconnect() above will immediately post - * a message to the handler thread that the disconnect - * is done, and if the handler runs before the code - * below does, the handler will have set the state to - * IDLE before the code below runs. If we didn't check - * for that, future calls to trySetupData would fail, - * and we would never get out of the DISCONNECTING state. - */ if (!tearDown) { setState(State.IDLE); phone.notifyDataConnection(reason); mActiveApn = null; - } else if (state != State.IDLE) { - setState(State.DISCONNECTING); } } @@ -813,6 +800,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { if (state != State.DISCONNECTING) { cleanUpConnection(isConnected, Phone.REASON_APN_CHANGED); if (!isConnected) { + // reset reconnect timer + nextReconnectDelay = RECONNECT_DELAY_INITIAL_MILLIS; trySetupData(Phone.REASON_APN_CHANGED); } } @@ -1406,6 +1395,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { resetPollStats(); } } else { + // reset reconnect timer + nextReconnectDelay = RECONNECT_DELAY_INITIAL_MILLIS; // in case data setup was attempted when we were on a voice call trySetupData(Phone.REASON_VOICE_CALL_ENDED); } |