Merge tag 'android-6.0.0_r26' into HEAD
Android 6.0.0 release 26
* tag 'android-6.0.0_r26':
Catch exception for ConnectivityManager.unregisterNetworkCallback
Default MMS proxy port to 80 and don't skip if port is invalid
MMS proxy host dns lookup should happen on mms network
Change-Id: I92a2b7e802fab7dc94fd6bca01ecd5bfbb31f9d0
diff --git a/src/com/android/mms/service/ApnSettings.java b/src/com/android/mms/service/ApnSettings.java
index 9a2b7ca..48383c1 100644
--- a/src/com/android/mms/service/ApnSettings.java
+++ b/src/com/android/mms/service/ApnSettings.java
@@ -113,7 +113,8 @@
if (cursor != null) {
String mmscUrl = null;
String proxyAddress = null;
- int proxyPort = -1;
+ // Default proxy port to 80
+ int proxyPort = 80;
while (cursor.moveToNext()) {
// Read values from APN settings
if (isValidApnType(
@@ -133,12 +134,11 @@
proxyAddress = NetworkUtils.trimV4AddrZeros(proxyAddress);
final String portString =
trimWithNullCheck(cursor.getString(COLUMN_MMSPORT));
- if (portString != null) {
+ if (!TextUtils.isEmpty(portString)) {
try {
proxyPort = Integer.parseInt(portString);
} catch (NumberFormatException e) {
- LogUtil.e(requestId, "Invalid port " + portString);
- throw new ApnException("Invalid port " + portString);
+ LogUtil.e(requestId, "Invalid port " + portString + ", use 80");
}
}
}
diff --git a/src/com/android/mms/service/MmsHttpClient.java b/src/com/android/mms/service/MmsHttpClient.java
index e09695c..f6d3d1b 100644
--- a/src/com/android/mms/service/MmsHttpClient.java
+++ b/src/com/android/mms/service/MmsHttpClient.java
@@ -109,7 +109,8 @@
try {
Proxy proxy = Proxy.NO_PROXY;
if (isProxySet) {
- proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
+ proxy = new Proxy(Proxy.Type.HTTP,
+ new InetSocketAddress(mNetwork.getByName(proxyHost), proxyPort));
}
final URL url = new URL(urlString);
// Now get the connection
diff --git a/src/com/android/mms/service/MmsNetworkManager.java b/src/com/android/mms/service/MmsNetworkManager.java
index ea2fa90..ed78258 100644
--- a/src/com/android/mms/service/MmsNetworkManager.java
+++ b/src/com/android/mms/service/MmsNetworkManager.java
@@ -185,7 +185,18 @@
private void releaseRequestLocked(ConnectivityManager.NetworkCallback callback) {
if (callback != null) {
final ConnectivityManager connectivityManager = getConnectivityManager();
- connectivityManager.unregisterNetworkCallback(callback);
+ try {
+ connectivityManager.unregisterNetworkCallback(callback);
+ } catch (IllegalArgumentException e) {
+ // It is possible ConnectivityManager.requestNetwork may fail silently due
+ // to RemoteException. When that happens, we may get an invalid
+ // NetworkCallback, which causes an IllegalArgumentexception when we try to
+ // unregisterNetworkCallback. This exception in turn causes
+ // MmsNetworkManager to skip resetLocked() in the below. Thus MMS service
+ // would get stuck in the bad state until the device restarts. This fix
+ // catches the exception so that state clean up can be executed.
+ LogUtil.w("Unregister network callback exception", e);
+ }
}
resetLocked();
}