diff --git a/src/com/android/phone/ImsStateCallbackController.java b/src/com/android/phone/ImsStateCallbackController.java
index 4e2407c..a7caab0 100644
--- a/src/com/android/phone/ImsStateCallbackController.java
+++ b/src/com/android/phone/ImsStateCallbackController.java
@@ -293,8 +293,9 @@
 
         @Override
         public void connectionReady(ImsManager manager, int subId) {
-            logd(mLogPrefix + "connectionReady");
+            logd(mLogPrefix + "connectionReady " + subId);
 
+            mSubId = subId;
             mState = STATE_READY;
             mReason = AVAILABLE;
             mHasConfig = true;
@@ -435,8 +436,9 @@
 
         @Override
         public void connectionReady(RcsFeatureManager manager, int subId) {
-            logd(mLogPrefix + "connectionReady");
+            logd(mLogPrefix + "connectionReady " + subId);
 
+            mSubId = subId;
             mState = STATE_READY;
             mReason = AVAILABLE;
             mHasConfig = true;
@@ -834,19 +836,21 @@
 
         if (wrapper.mRequiredFeature == FEATURE_MMTEL) {
             for (int i = 0; i < mMmTelFeatureListeners.size(); i++) {
-                MmTelFeatureListener l = mMmTelFeatureListeners.valueAt(i);
-                if (l.mSubId == wrapper.mSubId
-                        && !l.notifyState(wrapper)) {
-                    mWrappers.remove(wrapper.mBinder);
+                if (wrapper.mSubId == getSubId(i)) {
+                    MmTelFeatureListener l = mMmTelFeatureListeners.valueAt(i);
+                    if (!l.notifyState(wrapper)) {
+                        mWrappers.remove(wrapper.mBinder);
+                    }
                     break;
                 }
             }
         } else if (wrapper.mRequiredFeature == FEATURE_RCS) {
             for (int i = 0; i < mRcsFeatureListeners.size(); i++) {
-                RcsFeatureListener l = mRcsFeatureListeners.valueAt(i);
-                if (l.mSubId == wrapper.mSubId
-                        && !l.notifyState(wrapper)) {
-                    mWrappers.remove(wrapper.mBinder);
+                if (wrapper.mSubId == getSubId(i)) {
+                    RcsFeatureListener l = mRcsFeatureListeners.valueAt(i);
+                    if (!l.notifyState(wrapper)) {
+                        mWrappers.remove(wrapper.mBinder);
+                    }
                     break;
                 }
             }
diff --git a/tests/src/com/android/phone/ImsStateCallbackControllerTest.java b/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
index e4cdc6e..cbd6ceb 100644
--- a/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
+++ b/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
@@ -726,7 +726,7 @@
         verify(mCallback2, times(2)).onUnavailable(anyInt());
         verify(mCallback3, times(2)).onUnavailable(anyInt());
 
-        mMmTelConnectorListenerSlot1.getValue().connectionReady(null, SLOT_0_SUB_ID);
+        mMmTelConnectorListenerSlot1.getValue().connectionReady(null, SLOT_1_SUB_ID);
         processAllMessages();
         verify(mCallback0, times(1)).onAvailable();
         verify(mCallback1, times(1)).onAvailable();
@@ -737,7 +737,7 @@
         verify(mCallback2, times(2)).onUnavailable(anyInt());
         verify(mCallback3, times(2)).onUnavailable(anyInt());
 
-        mRcsConnectorListenerSlot1.getValue().connectionReady(null, SLOT_0_SUB_ID);
+        mRcsConnectorListenerSlot1.getValue().connectionReady(null, SLOT_1_SUB_ID);
         processAllMessages();
         verify(mCallback0, times(1)).onAvailable();
         verify(mCallback1, times(1)).onAvailable();
