diff options
| -rwxr-xr-x | telephony/java/com/android/internal/telephony/ApnSetting.java | 7 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java | 16 |
2 files changed, 22 insertions, 1 deletions
diff --git a/telephony/java/com/android/internal/telephony/ApnSetting.java b/telephony/java/com/android/internal/telephony/ApnSetting.java index 002ffad9294f..980bb49550e2 100755 --- a/telephony/java/com/android/internal/telephony/ApnSetting.java +++ b/telephony/java/com/android/internal/telephony/ApnSetting.java @@ -189,4 +189,11 @@ public class ApnSetting { } return false; } + + // TODO - if we have this function we should also have hashCode. + // Also should handle changes in type order and perhaps case-insensitivity + public boolean equals(Object o) { + if (o instanceof ApnSetting == false) return false; + return (this.toString().equals(o.toString())); + } } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index de09dfb3565a..11f162364a36 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -1720,11 +1720,25 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { private DataConnection checkForConnectionForApnContext(ApnContext apnContext) { // Loop through all apnContexts looking for one with a conn that satisfies this apnType String apnType = apnContext.getApnType(); + ApnSetting dunSetting = null; + + if (Phone.APN_TYPE_DUN.equals(apnType)) { + dunSetting = fetchDunApn(); + } + for (ApnContext c : mApnContexts.values()) { DataConnection conn = c.getDataConnection(); if (conn != null) { ApnSetting apnSetting = c.getApnSetting(); - if (apnSetting != null && apnSetting.canHandleType(apnType)) { + if (dunSetting != null) { + if (dunSetting.equals(apnSetting)) { + if (DBG) { + log("checkForConnectionForApnContext: apnContext=" + apnContext + + " found conn=" + conn); + } + return conn; + } + } else if (apnSetting != null && apnSetting.canHandleType(apnType)) { if (DBG) { log("checkForConnectionForApnContext: apnContext=" + apnContext + " found conn=" + conn); |