merge in mnc-dr-release history after reset to mnc-dr-dev
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();
     }