Catch SIP exceptions which can crash Phone process on answer. am: eb72c56094 am: d19b83390c am: d232102d70 am: 9058c0b2b7
am: 5d57624b5a
Change-Id: If57bf763fa0926113c144d4cbb18b8ebecd3f0a5
diff --git a/sip/src/com/android/services/telephony/sip/SipConnection.java b/sip/src/com/android/services/telephony/sip/SipConnection.java
index b10ae56..2dde5b5 100644
--- a/sip/src/com/android/services/telephony/sip/SipConnection.java
+++ b/sip/src/com/android/services/telephony/sip/SipConnection.java
@@ -24,6 +24,7 @@
import android.telecom.Connection;
import android.telecom.PhoneAccount;
import android.telecom.TelecomManager;
+import android.util.EventLog;
import android.util.Log;
import com.android.internal.telephony.Call;
@@ -181,6 +182,18 @@
}
} catch (CallStateException e) {
log("onAnswer, exception: " + e);
+ } catch (IllegalStateException e) {
+ // Call could not be answered due to an invalid audio-codec offered by the caller. We
+ // will reject the call to stop it from ringing.
+ log("onAnswer, IllegalStateException: " + e);
+ EventLog.writeEvent(0x534e4554, "31752213", -1, "Invalid codec.");
+ onReject();
+ } catch (IllegalArgumentException e) {
+ // Call could not be answered due to an error parsing the SDP. We will reject the call
+ // to stop it from ringing.
+ log("onAnswer, IllegalArgumentException: " + e);
+ EventLog.writeEvent(0x534e4554, "31752213", -1, "Invalid SDP.");
+ onReject();
}
}