Release BSS connection when SS message is rejected
When an initial call-independent supplementary service message is
received, it is checked whether the message is a REGISTER message.
If it is not, the MSC will reject it by sending a RELEASE COMPLETE
message.
This patch ensures that the MSC_A use counter is decremented, so
that the BSS connection is released, if it is not used by any other
transaction.
Without this patch, the msc_a_fsm would wait 5 seconds for an initial
transaction before releasing the BSS connection.
Related: OS#6427
Change-Id: Ic6765e5d480735e67d97f0f560da24653b26d487
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index e293890..ab40f02 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -142,6 +142,9 @@
gsm48_tx_simple(msc_a,
GSM48_PDISC_NC_SS | (tid << 4),
GSM0480_MTYPE_RELEASE_COMPLETE);
+ /* Decrement use counter that has been incremented by CM Service Request (SS).
+ * If there is no other service request, the BSS connection will be released. */
+ msc_a_put(msc_a, MSC_A_USE_CM_SERVICE_SS);
return -EINVAL;
}
@@ -151,6 +154,9 @@
gsm48_tx_simple(msc_a,
GSM48_PDISC_NC_SS | (tid << 4),
GSM0480_MTYPE_RELEASE_COMPLETE);
+ /* Decrement use counter that has been incremented by CM Service Request (SS).
+ * If there is no other service request, the BSS connection will be released. */
+ msc_a_put(msc_a, MSC_A_USE_CM_SERVICE_SS);
return -ENOMEM;
}