aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-10-11 00:50:05 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-03-16 15:32:32 +0100
commitbb36fae3b593b9a2ef7adbde106bea2977014c07 (patch)
tree715fc540b7e8a41c31c350501a786a2ccc203e8b /openbsc/src/libmsc
parent8be9087ca426a17b7b08df366a0a150b757b5edf (diff)
IuCS: don't remove Iu conn until release FIXME
Don't remove the gsm_subscriber_connection without an Iu Release. The 2G paradigm is to close a subscriber connection as soon as nothing else is pending. In 3G however, the conn is often discarded even though the IuCS stays open and valid, which confuses the situation: before the UE releases a bit later, we would try to page the subscriber unsuccessfully, because the UE expects to already be connected. To first fix the discrepancy of Iu vs. subscr release, never discard gsm_subscriber_connections when msc_release_connection() is called. This creates a "lazy" CN that keeps connections open as long as the UE will tolerate. It is really fast in sending many SMS in close succession, but is certainly a bad CN design choice: we should rather stay lean on connections. A subsequent commit will change this, but I decided to keep this commit as a reference, for when we'd like to test situations that should re-use an established connection. Change-Id: I012378cfa432d791146db387554ec1909de05297
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r--openbsc/src/libmsc/gsm_04_08.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index e948d7b8f..e1e3107de 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -811,6 +811,12 @@ static int gsm48_rx_mm_imsi_detach_ind(struct gsm_subscriber_connection *conn, s
osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_DETACHED, vsub);
vlr_subscr_put(vsub);
+#if 0
+ /* FIXME: for IuCS, always wait until the UE releases. */
+ if (conn->via_ran == RAN_UTRAN_IU)
+ return 0;
+#endif
+
msc_close_connection(conn);
return 0;
}