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();
     }
