aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2018-02-15 17:49:22 +0100
committerHarald Welte <laforge@gnumonks.org>2018-02-19 08:29:17 +0000
commit58d9dd8b3f5c42d80347ddd114a0469324b452e7 (patch)
treef9d821b456bf61b72056b9b3a65ede23f3be3bc9
parent02a79d854575652912b5bbc2184346861d6f1145 (diff)
libmsc: Pretend MNCC requested release in handle_error()
Send a release request to the MS so the connection does not stay open indefinitely. Change-Id: I7669d29cf5be3e4a60a1d121edbfcf9056f6d82b
-rw-r--r--src/libmsc/msc_mgcp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c
index 08aa09a5e..2bc186eb7 100644
--- a/src/libmsc/msc_mgcp.c
+++ b/src/libmsc/msc_mgcp.c
@@ -145,6 +145,15 @@ static void _handle_error(struct mgcp_ctx *mgcp_ctx, enum msc_mgcp_cause_code ca
const char *file, int line)
{
struct osmo_fsm_inst *fi;
+ struct gsm_mncc mncc = {
+ .msg_type = MNCC_REL_REQ,
+ .callref = mgcp_ctx->trans->callref,
+ .cause = {
+ .location = GSM48_CAUSE_LOC_PRN_S_LU,
+ .coding = 0, /* FIXME */
+ .value = GSM48_CC_CAUSE_RESOURCE_UNAVAIL
+ }
+ };
OSMO_ASSERT(mgcp_ctx);
fi = mgcp_ctx->fsm;
@@ -159,6 +168,8 @@ static void _handle_error(struct mgcp_ctx *mgcp_ctx, enum msc_mgcp_cause_code ca
/* Simulate the call end by sending a teardown event, so that
* the FSM proceeds directly with the DLCX */
osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_TEARDOWN_ERROR, mgcp_ctx);
+
+ mncc_tx_to_cc(mgcp_ctx->trans->net, MNCC_REL_REQ, &mncc);
}
/* Timer callback to shut down in case of connectivity problems */