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;
 		}