summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android (Google) Code Review <android-gerrit@google.com> 2009-06-12 13:46:00 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2009-06-12 13:46:00 -0700
commit7504da036834a661684185ef11ec2ec50a18ce1b (patch)
tree3f4ec63649a1be0ed9b653759ab935da40cb02d1
parent6599426f74371c823fcfe570f61577262eb0df44 (diff)
parentbbf7c00e06c0f6f39e26f7fdedbc7105b2f5c415 (diff)
Merge change 4080 into donut
* changes: Fix data connection issues.
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java19
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java21
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 42f8fac6ac21..c922cec8a667 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 270f78b6e3d0..71af4062224b 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);
}