mgcp: use mgcp DLCX command to terminate endpoint after call is done
Currently no DLCX command is sent to the mgcpgw when a call is over, this leaves the endpoint open. This means that the endpoint can not never be reused by other calls. This patch adds a DLCX that terminates the the endpoint when the call is done. Change-Id: Ifc5a7a62fc07b4b7fee612d52e949fcd6a8e04ed
This commit is contained in:
parent
253fc0b82e
commit
30c749e089
|
@ -55,3 +55,4 @@ int msc_gsm0808_tx_cipher_mode(struct gsm_subscriber_connection *conn, int ciphe
|
|||
int msc_tx_common_id(struct gsm_subscriber_connection *conn);
|
||||
int msc_call_assignment(struct gsm_trans *trans);
|
||||
int msc_call_bridge(struct gsm_trans *trans1, struct gsm_trans *trans2);
|
||||
void msc_call_release(struct gsm_trans *trans);
|
||||
|
|
|
@ -1333,6 +1333,9 @@ void _gsm48_cc_trans_free(struct gsm_trans *trans)
|
|||
{
|
||||
gsm48_stop_cc_timer(trans);
|
||||
|
||||
/* Make sure call also gets released on the mgcp side */
|
||||
msc_call_release(trans);
|
||||
|
||||
/* send release to L4, if callref still exists */
|
||||
if (trans->callref) {
|
||||
/* Ressource unavailable */
|
||||
|
|
|
@ -328,3 +328,17 @@ int msc_call_bridge(struct gsm_trans *trans1, struct gsm_trans *trans2)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void msc_call_release(struct gsm_trans *trans)
|
||||
{
|
||||
struct msgb *msg;
|
||||
struct gsm_subscriber_connection *conn = trans->conn;
|
||||
struct mgcpgw_client *mgcp = conn->network->mgcpgw.client;
|
||||
|
||||
msg = mgcp_msg_dlcx(mgcp, conn->iu.mgcp_rtp_endpoint);
|
||||
|
||||
if (mgcpgw_client_tx(mgcp, msg, NULL, NULL))
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Failed to send DLCX message for %s\n",
|
||||
vlr_subscr_name(trans->vsub));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue