diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-03-04 03:34:50 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-03-09 18:34:14 +0100 |
commit | 92ac3900a819b5f79c5ab66eaf016e7178a6f303 (patch) | |
tree | 294cae7ffbf89e2efd43b30aecedd68ae5f7b914 /openbsc/src/libvlr | |
parent | e38de9dd4f2649a0c4e4a16a1f199b48d5a2d2ff (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/libvlr')
-rw-r--r-- | openbsc/src/libvlr/vlr_access_req_fsm.c | 5 |
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); } |