summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYe Wen <ywen@google.com>2015-10-06 09:18:55 -0700
committerYe Wen <ywen@google.com>2015-10-06 13:27:14 -0700
commit7109ffadcf870446f6d606513ac6ca66b2ec83b4 (patch)
treee9a8c6b141d58200721bd70225b8726afb337b85
parentc26d8195e22a474ecef0e15b9707fa398722a167 (diff)
downloadandroid_packages_services_Mms-7109ffadcf870446f6d606513ac6ca66b2ec83b4.tar.gz
android_packages_services_Mms-7109ffadcf870446f6d606513ac6ca66b2ec83b4.tar.bz2
android_packages_services_Mms-7109ffadcf870446f6d606513ac6ca66b2ec83b4.zip
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
-rw-r--r--src/com/android/mms/service/MmsNetworkManager.java13
1 files changed, 12 insertions, 1 deletions
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();
}