aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-01-25 08:38:29 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2013-01-25 08:38:29 +0100
commit1590727b64c89679fe9a84368c5afa54d95512cd (patch)
tree303e7d6f35690e5783bc0ac60bafe1ef5b1fc8c8
parentc5e0851054f5829aeb74ad15a17eb8674bfbd283 (diff)
CC: mncc_release_ind() must send MNCC_REL_CNF in state N19
If transaction is destroyed, but callref still exists, the mncc_release_ind function is called. If the upper layer already sent an MNCC_REL_REQ, the state N19 was entered. In this case it expects an MNCC_REL_CNF.
-rw-r--r--openbsc/src/libmsc/gsm_04_08.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 1f26cdd48..1ac4b92fa 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -1291,6 +1291,8 @@ int mncc_release_ind(struct gsm_network *net, struct gsm_trans *trans,
memset(&rel, 0, sizeof(rel));
rel.callref = callref;
mncc_set_cause(&rel, location, value);
+ if (trans && trans->cc.state == GSM_CSTATE_RELEASE_REQ)
+ return mncc_recvmsg(net, trans, MNCC_REL_CNF, &rel);
return mncc_recvmsg(net, trans, MNCC_REL_IND, &rel);
}