aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gsm_04_08.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/gsm_04_08.c')
-rw-r--r--openbsc/src/gsm_04_08.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index b0e55414f..f8602a330 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -104,12 +104,12 @@ static void release_loc_updating_req(struct gsm_subscriber_connection *conn)
bsc_del_timer(&conn->loc_operation->updating_timer);
talloc_free(conn->loc_operation);
conn->loc_operation = 0;
- put_subscr_con(conn);
+ put_subscr_con(conn, 0);
}
static void allocate_loc_updating_req(struct gsm_subscriber_connection *conn)
{
- use_subscr_con(conn)
+ use_subscr_con(conn);
release_loc_updating_req(conn);
conn->loc_operation = talloc_zero(tall_locop_ctx,
@@ -122,7 +122,6 @@ static int gsm0408_authorize(struct gsm_subscriber_connection *conn, struct msgb
int rc;
db_subscriber_alloc_tmsi(conn->subscr);
- release_loc_updating_req(conn);
rc = gsm0408_loc_upd_acc(msg->lchan, conn->subscr->tmsi);
if (msg->lchan->ts->trx->bts->network->send_mm_info) {
/* send MM INFO with network name */
@@ -134,9 +133,7 @@ static int gsm0408_authorize(struct gsm_subscriber_connection *conn, struct msgb
* trigger further action like SMS delivery */
subscr_update(conn->subscr, msg->trx->bts,
GSM_SUBSCRIBER_UPDATE_ATTACHED);
-
- /* try to close channel ASAP */
- lchan_auto_release(conn->lchan);
+ release_loc_updating_req(conn);
return rc;
}
@@ -298,9 +295,8 @@ static void loc_upd_rej_cb(void *data)
struct gsm_lchan *lchan = conn->lchan;
struct gsm_bts *bts = lchan->ts->trx->bts;
- release_loc_updating_req(conn);
gsm0408_loc_upd_rej(lchan, bts->network->reject_cause);
- lchan_auto_release(lchan);
+ release_loc_updating_req(conn);
}
static void schedule_reject(struct gsm_subscriber_connection *conn)
@@ -722,8 +718,6 @@ static int gsm48_rx_mm_imsi_detach_ind(struct msgb *msg)
* imagine an IMSI DETACH happening during an active call! */
/* subscriber is detached: should we release lchan? */
- lchan_auto_release(msg->lchan);
-
return 0;
}
@@ -2070,7 +2064,6 @@ static int gsm48_cc_rx_release_compl(struct gsm_trans *trans, struct msgb *msg)
MNCC_REL_CNF, &rel);
/* FIXME: in case of multiple calls, we can't simply
* hang up here ! */
- lchan_auto_release(msg->lchan);
break;
default:
rc = mncc_recvmsg(trans->subscr->net, trans,