From e32e812b11520b244374371ee49eaed20c84a6e3 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Wed, 29 Dec 2010 14:35:21 -0800 Subject: [PATCH] Always file DUN requests for tethering. A bit of a hack so that first trySetupData call uses the proper APN in strange edge cases. Made a new startUsingNetworkFeature string that ConnectivityService knows means always pass the request to telephony even if telephony connections are not currently available. bug:3133178 Change-Id: I2559b9cbaed4b4ec02bdf7ea78e6003ee2be64f2 --- .../java/com/android/server/ConnectivityService.java | 9 +++++++-- .../java/com/android/server/connectivity/Tethering.java | 4 ++-- telephony/java/com/android/internal/telephony/Phone.java | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 5eb42e7d91658..eeaeadc948875 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -697,7 +697,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { usedNetworkType = ConnectivityManager.TYPE_MOBILE_MMS; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_SUPL)) { usedNetworkType = ConnectivityManager.TYPE_MOBILE_SUPL; - } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN)) { + } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN) || + TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN_ALWAYS)) { usedNetworkType = ConnectivityManager.TYPE_MOBILE_DUN; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_HIPRI)) { usedNetworkType = ConnectivityManager.TYPE_MOBILE_HIPRI; @@ -712,7 +713,11 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (ni.isAvailable() == false) { if (DBG) log("special network not available"); - return Phone.APN_TYPE_NOT_AVAILABLE; + if (!TextUtils.equals(feature,Phone.FEATURE_ENABLE_DUN_ALWAYS)) { + return Phone.APN_TYPE_NOT_AVAILABLE; + } else { + // else make the attempt anyway - probably giving REQUEST_STARTED below + } } synchronized(this) { diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java index a562e1fd7085a..fc1b2c45e31c0 100644 --- a/services/java/com/android/server/connectivity/Tethering.java +++ b/services/java/com/android/server/connectivity/Tethering.java @@ -1138,8 +1138,8 @@ public class Tethering extends INetworkManagementEventObserver.Stub { int result = Phone.APN_REQUEST_FAILED; try { result = service.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, - (mDunRequired ? Phone.FEATURE_ENABLE_DUN : Phone.FEATURE_ENABLE_HIPRI), - new Binder()); + (mDunRequired ? Phone.FEATURE_ENABLE_DUN_ALWAYS : + Phone.FEATURE_ENABLE_HIPRI), new Binder()); } catch (Exception e) { } switch (result) { diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java index 25ad48da47de6..d0b5540f494d9 100644 --- a/telephony/java/com/android/internal/telephony/Phone.java +++ b/telephony/java/com/android/internal/telephony/Phone.java @@ -132,6 +132,7 @@ public interface Phone { static final String FEATURE_ENABLE_SUPL = "enableSUPL"; static final String FEATURE_ENABLE_DUN = "enableDUN"; static final String FEATURE_ENABLE_HIPRI = "enableHIPRI"; + static final String FEATURE_ENABLE_DUN_ALWAYS = "enableDUNAlways"; /** * Return codes for enableApnType()