diff options
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gsm_04_11.c | 7 | ||||
-rw-r--r-- | openbsc/src/gsm_subscriber.c | 6 |
2 files changed, 8 insertions, 5 deletions
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 25fe467d6..cf9356cb6 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -140,7 +140,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) @@ -1187,8 +1187,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; @@ -1203,6 +1205,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 dc7d638f1..44f58e25e 100644 --- a/openbsc/src/gsm_subscriber.c +++ b/openbsc/src/gsm_subscriber.c @@ -209,7 +209,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 @@ -229,8 +229,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); } |