}
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()));
+ }
}
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);