diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2021-03-28 12:53:57 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2021-03-28 12:53:57 +0200 |
commit | 31b82eb27d0e1b9b0d37f6a7426982d3d928fa3e (patch) | |
tree | c8edc55a18e9722a26156f94ff8a1d55f15c8a6d | |
parent | 9ae3bfcbc5b19bd689e6c8c265705c31fdb15883 (diff) |
Fixed handling of early audio
-rw-r--r-- | src/telephone/telephone.c | 39 |
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 */ |