diff options
-rw-r--r-- | openbsc/include/openbsc/gsm_subscriber.h | 2 | ||||
-rw-r--r-- | openbsc/src/gsm_04_11.c | 7 | ||||
-rw-r--r-- | openbsc/src/gsm_subscriber.c | 6 |
3 files changed, 9 insertions, 6 deletions
diff --git a/openbsc/include/openbsc/gsm_subscriber.h b/openbsc/include/openbsc/gsm_subscriber.h index 29317e822..1318ae8fc 100644 --- a/openbsc/include/openbsc/gsm_subscriber.h +++ b/openbsc/include/openbsc/gsm_subscriber.h @@ -80,7 +80,7 @@ struct gsm_subscriber *subscr_get_by_id(struct gsm_network *net, struct gsm_subscriber *subscr_get_or_create(struct gsm_network *net, const char *imsi); int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts, int reason); -void subscr_put_channel(struct gsm_subscriber_connection *conn); +void subscr_put_channel(struct gsm_subscriber *subscr); void subscr_get_channel(struct gsm_subscriber *subscr, int type, gsm_cbfn *cbfn, void *param); struct gsm_subscriber *subscr_active_by_tmsi(struct gsm_network *net, diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 6c17492d9..bb43196b7 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -139,7 +139,7 @@ static void gsm411_release_conn(struct gsm_subscriber_connection *conn) if (!conn) return; - subscr_put_channel(conn); + subscr_put_channel(conn->subscr); } struct msgb *gsm411_msgb_alloc(void) @@ -1186,8 +1186,10 @@ void _gsm411_sms_trans_free(struct gsm_trans *trans) void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn) { + struct gsm_subscriber *subscr; struct gsm_trans *trans, *tmp; + subscr = subscr_get(conn->subscr); llist_for_each_entry_safe(trans, tmp, &conn->bts->network->trans_list, entry) if (trans->conn == conn) { struct gsm_sms *sms = trans->sms.sms; @@ -1202,6 +1204,7 @@ void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn) trans_free(trans); } - gsm411_release_conn(conn); + subscr_put_channel(subscr); + subscr_put(subscr); } diff --git a/openbsc/src/gsm_subscriber.c b/openbsc/src/gsm_subscriber.c index e44029c30..34163da4b 100644 --- a/openbsc/src/gsm_subscriber.c +++ b/openbsc/src/gsm_subscriber.c @@ -208,7 +208,7 @@ void subscr_get_channel(struct gsm_subscriber *subscr, } } -void subscr_put_channel(struct gsm_subscriber_connection *conn) +void subscr_put_channel(struct gsm_subscriber *subscr) { /* * FIXME: Continue with other requests now... by checking @@ -228,8 +228,8 @@ void subscr_put_channel(struct gsm_subscriber_connection *conn) * will listen to the paging requests before we timeout */ - if (conn->subscr && !llist_empty(&conn->subscr->requests)) - subscr_send_paging_request(conn->subscr); + if (subscr && !llist_empty(&subscr->requests)) + subscr_send_paging_request(subscr); } |