diff options
Diffstat (limited to 'openbsc/src/gsm_04_08.c')
-rw-r--r-- | openbsc/src/gsm_04_08.c | 15 |
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, |