Bug 889231 - [Bluetooth] Lock-up occurs when you make a call in no signal network state, r=echou
--- a/dom/bluetooth/BluetoothTelephonyListener.cpp
+++ b/dom/bluetooth/BluetoothTelephonyListener.cpp
@@ -63,25 +63,29 @@ TelephonyListener::EnumerateCallState(ui
return NS_OK;
}
NS_IMETHODIMP
TelephonyListener::NotifyError(int32_t aCallIndex,
const nsAString& aError)
{
BluetoothHfpManager* hfp = BluetoothHfpManager::Get();
- // In order to not miss any related call state transition.
- // It's possible that 3G network signal lost for unknown reason.
- // If a call is released abnormally, NotifyError() will be called,
- // instead of CallStateChanged(). We need to reset the call array state
- // via setting CALL_STATE_DISCONNECTED
- hfp->HandleCallStateChanged(aCallIndex,
- nsITelephonyProvider::CALL_STATE_DISCONNECTED,
- EmptyString(), false, true);
- NS_WARNING("Reset the call state due to call transition ends abnormally");
+
+ if (aCallIndex > 0) {
+ // In order to not miss any related call state transition.
+ // It's possible that 3G network signal lost for unknown reason.
+ // If a call is released abnormally, NotifyError() will be called,
+ // instead of CallStateChanged(). We need to reset the call array state
+ // via setting CALL_STATE_DISCONNECTED
+ hfp->HandleCallStateChanged(aCallIndex,
+ nsITelephonyProvider::CALL_STATE_DISCONNECTED,
+ EmptyString(), false, true);
+ NS_WARNING("Reset the call state due to call transition ends abnormally");
+ }
+
NS_WARNING(NS_ConvertUTF16toUTF8(aError).get());
return NS_OK;
}
} // anonymous namespace
BluetoothTelephonyListener::BluetoothTelephonyListener()
{