diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2017-06-08 12:21:07 +0200 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-06-18 17:50:08 +0200 |
commit | b8012aad098444a83014d40a4a84b62a4be4c59a (patch) | |
tree | 04f8aac840e18fa2ece0ff92ab667ea3e8d63264 /openbsc/src/libmsc | |
parent | 188a804f6df55a66185054e664d6b3a998e7a371 (diff) |
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.
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r-- | openbsc/src/libmsc/gsm_04_08.c | 3 | ||||
-rw-r--r-- | openbsc/src/libmsc/msc_ifaces.c | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index c2919f7aa..4e7b0bb70 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -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 */ diff --git a/openbsc/src/libmsc/msc_ifaces.c b/openbsc/src/libmsc/msc_ifaces.c index 7162f5f12..0b0dfdcfd 100644 --- a/openbsc/src/libmsc/msc_ifaces.c +++ b/openbsc/src/libmsc/msc_ifaces.c @@ -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)); +} |