[subscriber] Introduce subscr_put_channel

Introduce subscr_put_channel to release a channel and to
allow gsm_subscriber.c to hand this channel to any suitable
pending requests.
diff --git a/include/openbsc/gsm_subscriber.h b/include/openbsc/gsm_subscriber.h
index 170e523..7da896e 100644
--- a/include/openbsc/gsm_subscriber.h
+++ b/include/openbsc/gsm_subscriber.h
@@ -43,6 +43,7 @@
 struct gsm_subscriber *subscr_get_by_imsi(const char *imsi);
 struct gsm_subscriber *subscr_get_by_extension(const char *ext);
 int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts, int reason);
+void subscr_put_channel(struct gsm_lchan *lchan);
 
 /* internal */
 struct gsm_subscriber *subscr_alloc(void);
diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index a9183de..85af502 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -1208,7 +1208,13 @@
 	DEBUGP(DCC, "A <- RELEASE\n");
 	rc = gsm48_tx_simple(msg->lchan, GSM48_PDISC_CC,
 			     GSM48_MT_CC_RELEASE);
-	put_lchan(msg->lchan);
+
+	/*
+	 * FIXME: This looks wrong! We should have a single
+	 * place to do MMCC-REL-CNF/-REQ/-IND and then switch
+	 * to the NULL state and relase the call
+	 */
+	subscr_put_channel(msg->lchan);
 
 	/* forward DISCONNECT to other party */
 	if (!call->remote_lchan)
@@ -1294,7 +1300,7 @@
 		/* need to respond with RELEASE_COMPLETE */
 		rc = gsm48_tx_simple(msg->lchan, GSM48_PDISC_CC,
 				     GSM48_MT_CC_RELEASE_COMPL);
-		put_lchan(msg->lchan);
+		subscr_put_channel(msg->lchan);
                 call->state = GSM_CSTATE_NULL;
 		break;
 	case GSM48_MT_CC_STATUS_ENQ:
diff --git a/src/gsm_subscriber.c b/src/gsm_subscriber.c
index e3cd5eb..0c2dd7c 100644
--- a/src/gsm_subscriber.c
+++ b/src/gsm_subscriber.c
@@ -122,3 +122,14 @@
 		subscr_free(subscr);
 	return NULL;
 }
+
+void subscr_put_channel(struct gsm_lchan *lchan)
+{
+	/*
+	 * FIXME: Continue with other requests now... by checking
+	 * the gsm_subscriber inside the gsm_lchan. Drop the ref count
+	 * of the lchan after having asked the next requestee to handle
+	 * the channel.
+	 */
+	put_lchan(lchan);
+}