summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2021-03-28 12:53:57 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2021-03-28 12:53:57 +0200
commit31b82eb27d0e1b9b0d37f6a7426982d3d928fa3e (patch)
treec8edc55a18e9722a26156f94ff8a1d55f15c8a6d
parent9ae3bfcbc5b19bd689e6c8c265705c31fdb15883 (diff)
Fixed handling of early audio
-rw-r--r--src/telephone/telephone.c39
1 files changed, 31 insertions, 8 deletions
diff --git a/src/telephone/telephone.c b/src/telephone/telephone.c
index f141ebd..d4cc540 100644
--- a/src/telephone/telephone.c
+++ b/src/telephone/telephone.c
@@ -459,10 +459,14 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
if (ui_autoanswer) {
/* create osmo-cc message */
new_msg = osmo_cc_new_msg(OSMO_CC_MSG_SETUP_CNF);
- /* sdp */
- osmo_cc_add_ie_sdp(new_msg, call->sdp);
- free((char *)call->sdp);
- call->sdp = NULL;
+ if (call->telephone_ep->early_audio) {
+ /* progress */
+ osmo_cc_add_ie_progress(msg, OSMO_CC_CODING_ITU_T, call->telephone_ep->serving_location, OSMO_CC_PROGRESS_INBAND_INFO_AVAILABLE);
+ /* sdp */
+ osmo_cc_add_ie_sdp(new_msg, call->sdp);
+ free((char *)call->sdp);
+ call->sdp = NULL;
+ }
/* send message to osmo-cc */
osmo_cc_ll_msg(&call->telephone_ep->cc_ep, call->cc_callref, new_msg);
/* change state */
@@ -471,14 +475,33 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
if (ui_autoalert) {
/* create osmo-cc message */
new_msg = osmo_cc_new_msg(OSMO_CC_MSG_ALERT_IND);
- /* sdp */
- osmo_cc_add_ie_sdp(new_msg, call->sdp);
- free((char *)call->sdp);
- call->sdp = NULL;
+ if (call->telephone_ep->early_audio) {
+ /* progress */
+ osmo_cc_add_ie_progress(msg, OSMO_CC_CODING_ITU_T, call->telephone_ep->serving_location, OSMO_CC_PROGRESS_INBAND_INFO_AVAILABLE);
+ /* sdp */
+ osmo_cc_add_ie_sdp(new_msg, call->sdp);
+ free((char *)call->sdp);
+ call->sdp = NULL;
+ }
/* send message to osmo-cc */
osmo_cc_ll_msg(&call->telephone_ep->cc_ep, call->cc_callref, new_msg);
/* change state */
call_new_state(call, CALL_STATE_IN_ALERTING);
+ } else {
+ /* create osmo-cc message */
+ new_msg = osmo_cc_new_msg(OSMO_CC_MSG_SETUP_ACK_IND);
+ if (call->telephone_ep->early_audio) {
+ /* progress */
+ osmo_cc_add_ie_progress(msg, OSMO_CC_CODING_ITU_T, call->telephone_ep->serving_location, OSMO_CC_PROGRESS_INBAND_INFO_AVAILABLE);
+ /* sdp */
+ osmo_cc_add_ie_sdp(new_msg, call->sdp);
+ free((char *)call->sdp);
+ call->sdp = NULL;
+ }
+ /* send message to osmo-cc */
+ osmo_cc_ll_msg(&call->telephone_ep->cc_ep, call->cc_callref, new_msg);
+ /* change state */
+ call_new_state(call, CALL_STATE_IN_OVERLAP);
}
break;
case OSMO_CC_MSG_SETUP_ACK_REQ: /* more information is needed */