aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc/gsm_04_08.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmsc/gsm_04_08.c')
-rw-r--r--openbsc/src/libmsc/gsm_04_08.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index f39785e8d..68ac3cf86 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -3464,6 +3464,7 @@ static int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *m
}
/* Assign transaction */
trans->conn = msc_conn_get(conn);
+ cm_service_request_concludes(conn, msg);
}
/* find function for current state and message */
@@ -3520,13 +3521,13 @@ static bool msg_is_initially_permitted(const struct gsm48_hdr *hdr)
return false;
}
-static void
-cm_service_request_concludes(struct gsm_subscriber_connection *conn,
- struct msgb *msg)
+void cm_service_request_concludes(struct gsm_subscriber_connection *conn,
+ struct msgb *msg)
{
/* If a CM Service Request was received before, this is the request the
* conn was opened for. No need to wait for further messages. */
+
if (!conn->received_cm_service_request)
return;
@@ -3580,15 +3581,6 @@ int gsm0408_dispatch(struct gsm_subscriber_connection *conn, struct msgb *msg)
return silent_call_rx(conn, msg);
#endif
- /* Should we receive RR messages like an odd UTRAN Classmark Change,
- * don't close the CM Service Request initiated conn yet. All others
- * constitue a service and the conn can be closed, or something unknown
- * is happening and we'd rather close the conn instead of idling around
- * (we may add more specific exceptions as they become apparent). */
- if (pdisc != GSM48_PDISC_RR) {
- cm_service_request_concludes(conn, msg);
- }
-
switch (pdisc) {
case GSM48_PDISC_CC:
rc = gsm0408_rcv_cc(conn, msg);