diff --git a/openbsc/include/openbsc/paging.h b/openbsc/include/openbsc/paging.h index 9a7930dbc..68d8a6a95 100644 --- a/openbsc/include/openbsc/paging.h +++ b/openbsc/include/openbsc/paging.h @@ -60,7 +60,8 @@ int paging_request(struct gsm_network *network, struct gsm_subscriber *subscr, /* stop paging requests */ void paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr, - struct gsm_subscriber_connection *conn); + struct gsm_subscriber_connection *conn, + struct msgb *msg); /* update paging load */ void paging_update_buffer_space(struct gsm_bts *bts, u_int16_t); diff --git a/openbsc/src/gsm_04_08_utils.c b/openbsc/src/gsm_04_08_utils.c index e8d54ac98..b63293389 100644 --- a/openbsc/src/gsm_04_08_utils.c +++ b/openbsc/src/gsm_04_08_utils.c @@ -309,7 +309,7 @@ int gsm48_handle_paging_resp(struct gsm_subscriber_connection *conn, dispatch_signal(SS_PAGING, S_PAGING_SUCCEEDED, &sig_data); /* Stop paging on the bts we received the paging response */ - paging_request_stop(conn->bts, subscr, conn); + paging_request_stop(conn->bts, subscr, conn, msg); return 0; } diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c index 18d41aa56..70f378a21 100644 --- a/openbsc/src/paging.c +++ b/openbsc/src/paging.c @@ -340,7 +340,8 @@ int paging_request(struct gsm_network *network, struct gsm_subscriber *subscr, /* we consciously ignore the type of the request here */ static void _paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr, - struct gsm_subscriber_connection *conn) + struct gsm_subscriber_connection *conn, + struct msgb *msg) { struct gsm_bts_paging_state *bts_entry = &bts->paging; struct gsm_paging_request *req, *req2; @@ -351,7 +352,7 @@ static void _paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *sub if (conn && req->cbfn) { LOGP(DPAG, LOGL_DEBUG, "Stop paging on bts %d, calling cbfn.\n", bts->nr); req->cbfn(GSM_HOOK_RR_PAGING, GSM_PAGING_SUCCEEDED, - NULL, conn, req->cbfn_param); + msg, conn, req->cbfn_param); } else LOGP(DPAG, LOGL_DEBUG, "Stop paging on bts %d silently.\n", bts->nr); paging_remove_request(&bts->paging, req); @@ -362,12 +363,13 @@ static void _paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *sub /* Stop paging on all other bts' */ void paging_request_stop(struct gsm_bts *_bts, struct gsm_subscriber *subscr, - struct gsm_subscriber_connection *conn) + struct gsm_subscriber_connection *conn, + struct msgb *msg) { struct gsm_bts *bts = NULL; if (_bts) - _paging_request_stop(_bts, subscr, conn); + _paging_request_stop(_bts, subscr, conn, msg); do { /* @@ -382,7 +384,7 @@ void paging_request_stop(struct gsm_bts *_bts, struct gsm_subscriber *subscr, /* Stop paging */ if (bts != _bts) - _paging_request_stop(bts, subscr, NULL); + _paging_request_stop(bts, subscr, NULL, NULL); } while (1); } diff --git a/openbsc/src/transaction.c b/openbsc/src/transaction.c index 59414a4a0..10bf4578f 100644 --- a/openbsc/src/transaction.c +++ b/openbsc/src/transaction.c @@ -98,7 +98,7 @@ void trans_free(struct gsm_trans *trans) if (!trans->conn && trans->subscr && trans->subscr->net) { /* Stop paging on all bts' */ - paging_request_stop(NULL, trans->subscr, NULL); + paging_request_stop(NULL, trans->subscr, NULL, NULL); } if (trans->subscr)