IMS: Fix crash during midcall disabled multicall SRVCC.
Avoid null pointer exception when handover state changed event
is handled by a closed TelephonyConnection by checking for validity
of mOriginalConnection.
BUG: 22405832
Change-Id: I2c5cfd86ec8e50f46ecc13b808884eea2d459764
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 8c09a95..d04a2a5 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -67,14 +67,21 @@
AsyncResult ar = (AsyncResult) msg.obj;
com.android.internal.telephony.Connection connection =
(com.android.internal.telephony.Connection) ar.result;
- if ((connection.getAddress() != null &&
- mOriginalConnection.getAddress() != null &&
+ if (mOriginalConnection != null) {
+ if (connection != null &&
+ ((connection.getAddress() != null &&
+ mOriginalConnection.getAddress() != null &&
mOriginalConnection.getAddress().contains(connection.getAddress())) ||
- connection.getStateBeforeHandover() == mOriginalConnection.getState()) {
- Log.d(TelephonyConnection.this, "SettingOriginalConnection " +
- mOriginalConnection.toString() + " with " + connection.toString());
- setOriginalConnection(connection);
- mWasImsConnection = false;
+ connection.getStateBeforeHandover() == mOriginalConnection.getState())) {
+ Log.d(TelephonyConnection.this,
+ "SettingOriginalConnection " + mOriginalConnection.toString()
+ + " with " + connection.toString());
+ setOriginalConnection(connection);
+ mWasImsConnection = false;
+ }
+ } else {
+ Log.w(TelephonyConnection.this,
+ "MSG_HANDOVER_STATE_CHANGED: mOriginalConnection==null - invalid state (not cleaned up)");
}
break;
case MSG_RINGBACK_TONE: