diff options
Diffstat (limited to 'openbsc/src/transaction.c')
-rw-r--r-- | openbsc/src/transaction.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/openbsc/src/transaction.c b/openbsc/src/transaction.c index 4b586a637..bd2761b5f 100644 --- a/openbsc/src/transaction.c +++ b/openbsc/src/transaction.c @@ -96,13 +96,13 @@ void trans_free(struct gsm_trans *trans) break; } - if (!trans->lchan && trans->subscr && trans->subscr->net) { + if (!trans->conn && trans->subscr && trans->subscr->net) { /* Stop paging on all bts' */ paging_request_stop(NULL, trans->subscr, NULL); } - if (trans->lchan) - put_lchan(trans->lchan, 0); + if (trans->conn) + put_subscr_con(trans->conn, 0); if (trans->subscr) subscr_put(trans->subscr); @@ -149,21 +149,22 @@ int trans_assign_trans_id(struct gsm_subscriber *subscr, /* update all transactions to use a different LCHAN, e.g. * after handover has succeeded */ -int trans_lchan_change(struct gsm_lchan *lchan_old, - struct gsm_lchan *lchan_new) +int trans_lchan_change(struct gsm_subscriber_connection *conn_old, + struct gsm_subscriber_connection *conn_new) { - struct gsm_network *net = lchan_old->ts->trx->bts->network; + struct gsm_network *net = conn_old->lchan->ts->trx->bts->network; struct gsm_trans *trans; int num = 0; llist_for_each_entry(trans, &net->trans_list, entry) { - if (trans->lchan == lchan_old) { - /* drop old channel use cound */ - put_lchan(trans->lchan, 0); + if (trans->conn == conn_old) { + + /* drop old channel use count */ + put_subscr_con(conn_old, 0); /* assign new channel */ - trans->lchan = lchan_new; + trans->conn = conn_new; /* bump new channel use count */ - use_lchan(trans->lchan); + use_subscr_con(conn_new); num++; } } |