MNCC: do not send REL_IND twice
Add trans.cc.mncc_release_sent and skip MNCC_REL_IND if already true.
Related: SYS#5066
Change-Id: I449e1e4139af5f41da08ba9f6815ef74d8e13897
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index b206a8c..b3415f6 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -237,6 +237,22 @@
struct msgb *msg;
unsigned char *data;
+ switch (msg_type) {
+ case MNCC_DISC_IND:
+ case MNCC_REL_IND:
+ if (trans) {
+ if (trans->cc.mncc_release_sent) {
+ LOG_TRANS_CAT_SRC(trans, DMNCC, file, line, LOGL_DEBUG,
+ "Already released, skipping tx %s\n", get_mncc_name(msg_type));
+ return 0;
+ }
+ trans->cc.mncc_release_sent = true;
+ }
+ break;
+ default:
+ break;
+ }
+
LOG_TRANS_CAT_SRC(trans, DMNCC, file, line, LOGL_DEBUG, "tx %s\n", get_mncc_name(msg_type));
mncc->msg_type = msg_type;