aboutsummaryrefslogtreecommitdiffstats
path: root/src/libvlr/vlr_lu_fsm.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-12-28 21:22:32 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2019-01-04 01:46:46 +0000
commit1035d90c1761d4ab94c998908a475a8dbc09b50c (patch)
tree0f2d22b8039c4a7bc1cfac1a9bba51bc9bf13d3c /src/libvlr/vlr_lu_fsm.c
parent3350bf9f78253eb9f647c8377b6446a4fc7b26e8 (diff)
fix vlr ops.subscr_assoc re-association
In rare cases, a conn is already associated with a subscriber. So far, we abort()ed on that, bringing the entire osmo-msc down. Rather log an error and keep the service running. In vlr.ops.subscr_assoc, add success/failure return value, and abort the LU/PARQ on error. I haven't figured out in detail yet why/how a subscriber would re-launch a LU/PARQ on a conn that is already associated, so far it is merely clear that we do not want to crash the MSC if that happens. A log is in OS#3742. Related: OS#3742, OS#3743 Change-Id: Ic0d54644bc735700220b1ef3a4384c217d57d20f
Diffstat (limited to 'src/libvlr/vlr_lu_fsm.c')
-rw-r--r--src/libvlr/vlr_lu_fsm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index e635305fa..b00f8cef0 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -954,7 +954,8 @@ static int assoc_lfp_with_sub(struct osmo_fsm_inst *fi, struct vlr_subscr *vsub)
lfp->vsub = vsub;
/* Tell MSC to associate this subscriber with the given
* connection */
- vlr->ops.subscr_assoc(lfp->msc_conn_ref, lfp->vsub);
+ if (vlr->ops.subscr_assoc(lfp->msc_conn_ref, lfp->vsub))
+ lu_fsm_failure(fi, GSM48_REJECT_NETWORK_FAILURE);
return 0;
}