From c2348f85a918ec6846c3ce4957ae2cd5d69a1f33 Mon Sep 17 00:00:00 2001 From: Ye Wen Date: Thu, 17 Sep 2015 11:28:31 -0700 Subject: MMS proxy host dns lookup should happen on mms network b/24071236 Change-Id: Ia34a66ce1a09276dab4e98b8ee0ab0fa819eea65 --- src/com/android/mms/service/MmsHttpClient.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 @@ public class MmsHttpClient { 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 -- cgit v1.2.3 From f3bdfd79f02937109245a846db4e6a5e8cb9971a Mon Sep 17 00:00:00 2001 From: Ye Wen Date: Fri, 11 Sep 2015 17:00:59 -0700 Subject: Default MMS proxy port to 80 and don't skip if port is invalid b/24002396 Change-Id: I5de0774c3d1a15f9fb04e04213f8258fb26d1f3f (cherry picked from commit 66c0dcc93bf1e6d04b64a1dddf89ee2e3e9de7cc) --- src/com/android/mms/service/ApnSettings.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 @@ public class ApnSettings { 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 @@ public class ApnSettings { 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"); } } } -- cgit v1.2.3 From 7109ffadcf870446f6d606513ac6ca66b2ec83b4 Mon Sep 17 00:00:00 2001 From: Ye Wen Date: Tue, 6 Oct 2015 09:18:55 -0700 Subject: Catch exception for ConnectivityManager.unregisterNetworkCallback 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 the code to clean up states. 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. b/24306554 Change-Id: I3c0df8dab9af0f7a7f2e647b38f5df29177b7ff8 --- src/com/android/mms/service/MmsNetworkManager.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 @@ public class MmsNetworkManager { 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(); } -- cgit v1.2.3