aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-03-04 03:34:50 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-03-16 15:32:30 +0100
commit1ca587aab009da261f99b65e37ccd217a6b94a58 (patch)
tree202c6d92ff82b1abc4ecfaabfd8188cdca573c6d /openbsc/src
parent6da3bc7c0afd0352fb46b271b9e6a01aaa3c5cfe (diff)
vlr: fix: don't send CM Service Accept after Ciphering Command
Ciphering Mode Command is an implicit CM Service Accept, if we're sending both we're confusing the MS. Change-Id: I3a04debe9b01c086e7f44b6139cb8796fcc71d38 Conflicts: openbsc/tests/msc_vlr/msc_vlr_test_umts_authen.c openbsc/tests/msc_vlr/msc_vlr_test_umts_authen.err
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/libvlr/vlr_access_req_fsm.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/openbsc/src/libvlr/vlr_access_req_fsm.c b/openbsc/src/libvlr/vlr_access_req_fsm.c
index 1ccc37792..96ded2aca 100644
--- a/openbsc/src/libvlr/vlr_access_req_fsm.c
+++ b/openbsc/src/libvlr/vlr_access_req_fsm.c
@@ -81,6 +81,7 @@ struct proc_arq_priv {
enum vlr_ciph ciphering_required;
bool is_r99;
bool is_utran;
+ bool implicitly_accepted_parq_by_ciphering_cmd;
};
static void assoc_par_with_subscr(struct osmo_fsm_inst *fi, struct vlr_subscr *vsub)
@@ -125,7 +126,8 @@ static void proc_arq_vlr_dispatch_result(struct osmo_fsm_inst *fi,
* will be processed before we handle new incoming data from the MS. */
if (par->type == VLR_PR_ARQ_T_CM_SERV_REQ) {
- if (success) {
+ if (success
+ && !par->implicitly_accepted_parq_by_ciphering_cmd) {
rc = par->vlr->ops.tx_cm_serv_acc(par->msc_conn_ref);
if (rc) {
LOGPFSML(fi, LOGL_ERROR,
@@ -287,6 +289,7 @@ static void _proc_arq_vlr_node2(struct osmo_fsm_inst *fi)
return;
}
+ par->implicitly_accepted_parq_by_ciphering_cmd = true;
osmo_fsm_inst_state_chg(fi, PR_ARQ_S_WAIT_CIPH, 0, 0);
}