vlr_subscr: use osmo_use_count
Depends: Ife31e6798b4e728a23913179e346552a7dd338c0 (libosmocore)
Change-Id: Ib06d030e8464abe415ff597d462ed40eeddef475
diff --git a/src/libvlr/vlr_sgs.c b/src/libvlr/vlr_sgs.c
index 06737db..3ee7799 100644
--- a/src/libvlr/vlr_sgs.c
+++ b/src/libvlr/vlr_sgs.c
@@ -80,7 +80,7 @@
OSMO_ASSERT(cfg);
OSMO_ASSERT(imsi);
- vsub = vlr_subscr_find_or_create_by_imsi(vlr, imsi, NULL);
+ vsub = vlr_subscr_find_or_create_by_imsi(vlr, imsi, VSUB_USE_SGS, NULL);
if (!vsub) {
LOGP(DSGS, LOGL_ERROR, "VLR subscriber allocation failed\n");
return -EINVAL;
@@ -137,7 +137,7 @@
struct vlr_subscr *vsub;
enum sgs_ue_fsm_event evt;
- vsub = vlr_subscr_find_by_imsi(vlr, imsi);
+ vsub = vlr_subscr_find_by_imsi(vlr, imsi, __func__);
if (!vsub)
return;
@@ -164,12 +164,12 @@
}
osmo_fsm_inst_dispatch(vsub->sgs_fsm, evt, NULL);
- vlr_subscr_put(vsub);
/* Detaching from non EPS services essentially means that the
* subscriber is detached from 2G. In any case the VLR will
* get rid of the subscriber. */
vlr_subscr_expire(vsub);
+ vlr_subscr_put(vsub, __func__);
}
/*! Perform an SGs EPS detach.
@@ -180,7 +180,7 @@
{
struct vlr_subscr *vsub;
enum sgs_ue_fsm_event evt;
- vsub = vlr_subscr_find_by_imsi(vlr, imsi);
+ vsub = vlr_subscr_find_by_imsi(vlr, imsi, __func__);
if (!vsub)
return;
@@ -211,7 +211,7 @@
if (vsub->expire_lu == VLR_SUBSCRIBER_NO_EXPIRATION)
vlr_subscr_enable_expire_lu(vsub);
- vlr_subscr_put(vsub);
+ vlr_subscr_put(vsub, __func__);
}
/*! Perform an SGs TMSI reallocation complete.
@@ -220,12 +220,12 @@
void vlr_sgs_tmsi_reall_compl(struct vlr_instance *vlr, const char *imsi)
{
struct vlr_subscr *vsub;
- vsub = vlr_subscr_find_by_imsi(vlr, imsi);
+ vsub = vlr_subscr_find_by_imsi(vlr, imsi, __func__);
if (!vsub)
return;
osmo_fsm_inst_dispatch(vsub->sgs_fsm, SGS_UE_E_RX_TMSI_REALLOC, NULL);
- vlr_subscr_put(vsub);
+ vlr_subscr_put(vsub, __func__);
}
/*! Notify that an SGs paging has been rejected by the MME.
@@ -235,7 +235,7 @@
void vlr_sgs_pag_rej(struct vlr_instance *vlr, const char *imsi, enum sgsap_sgs_cause cause)
{
struct vlr_subscr *vsub;
- vsub = vlr_subscr_find_by_imsi(vlr, imsi);
+ vsub = vlr_subscr_find_by_imsi(vlr, imsi, __func__);
if (!vsub)
return;
@@ -246,10 +246,10 @@
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5), sgsap_sgs_cause_name(cause));
osmo_fsm_inst_dispatch(vsub->sgs_fsm, SGS_UE_E_RX_PAGING_FAILURE, &cause);
- vlr_subscr_put(vsub);
-
/* Balance ref count increment from vlr_sgs_pag() */
- vlr_subscr_put(vsub);
+ vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING);
+
+ vlr_subscr_put(vsub, __func__);
}
/*! Notify that an SGs paging has been accepted by the MME.
@@ -258,16 +258,16 @@
void vlr_sgs_pag_ack(struct vlr_instance *vlr, const char *imsi)
{
struct vlr_subscr *vsub;
- vsub = vlr_subscr_find_by_imsi(vlr, imsi);
+ vsub = vlr_subscr_find_by_imsi(vlr, imsi, __func__);
if (!vsub)
return;
/* Stop Ts5 and and consider the paging as successful */
osmo_timer_del(&vsub->sgs.Ts5);
- vlr_subscr_put(vsub);
-
/* Balance ref count increment from vlr_sgs_pag() */
- vlr_subscr_put(vsub);
+ vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING);
+
+ vlr_subscr_put(vsub, __func__);
}
/*! Notify that the UE has been marked as unreachable by the MME.
@@ -277,7 +277,7 @@
void vlr_sgs_ue_unr(struct vlr_instance *vlr, const char *imsi, enum sgsap_sgs_cause cause)
{
struct vlr_subscr *vsub;
- vsub = vlr_subscr_find_by_imsi(vlr, imsi);
+ vsub = vlr_subscr_find_by_imsi(vlr, imsi, __func__);
if (!vsub)
return;
@@ -289,7 +289,7 @@
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5), sgsap_sgs_cause_name(cause));
osmo_fsm_inst_dispatch(vsub->sgs_fsm, SGS_UE_E_RX_SGSAP_UE_UNREACHABLE, &cause);
- vlr_subscr_put(vsub);
+ vlr_subscr_put(vsub, __func__);
}
/* Callback function that is called when an SGs paging request times out */
@@ -306,7 +306,7 @@
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5));
/* Balance ref count increment from vlr_sgs_pag() */
- vlr_subscr_put(vsub);
+ vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING);
return;
}
@@ -346,7 +346,7 @@
/* Ensure that the reference count is increased by one while the
* paging is happening. We will balance this again in vlr_sgs_pag_rej()
* and vlr_sgs_pag_ack(); */
- vlr_subscr_get(vsub);
+ vlr_subscr_get(vsub, VSUB_USE_SGS_PAGING);
}
/*! Check if the SGs interface is currently paging