Merge "Always call unbindService no matter what bindService returns"
diff --git a/src/java/com/android/internal/telephony/CarrierServiceBindHelper.java b/src/java/com/android/internal/telephony/CarrierServiceBindHelper.java
index 4b4980e..162da24 100644
--- a/src/java/com/android/internal/telephony/CarrierServiceBindHelper.java
+++ b/src/java/com/android/internal/telephony/CarrierServiceBindHelper.java
@@ -71,9 +71,6 @@
     private final PackageChangeReceiver mPackageMonitor = new CarrierServicePackageMonitor();
     private final LocalLog mLocalLog = new LocalLog(100);
 
-    // whether we have successfully bound to the service
-    private boolean mServiceBound = false;
-
     private BroadcastReceiver mUserUnlockedReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -291,7 +288,6 @@
                         (r) -> mHandler.post(r),
                         connection)) {
                     logdWithLocalLog("service bound");
-                    mServiceBound = true;
                     return;
                 }
 
@@ -346,16 +342,13 @@
             carrierPackage = null;
             carrierServiceClass = null;
 
-            // Actually unbind
-            if (mServiceBound) {
-                logdWithLocalLog("Unbinding from carrier app");
-                mServiceBound = false;
+            // Always call unbindService, no matter if bindService succeed.
+            if (connection != null) {
                 mContext.unbindService(connection);
-            } else {
-                logdWithLocalLog("Not bound, skipping unbindService call");
+                logdWithLocalLog("Unbinding from carrier app");
+                connection = null;
+                mUnbindScheduledUptimeMillis = -1;
             }
-            connection = null;
-            mUnbindScheduledUptimeMillis = -1;
         }
 
         private void cancelScheduledUnbind() {