paging: Fix regression stopping active requests on unanswered BTS
When rewriting the loop, the pointer passed all the time to
paging_remove_request() was the one of the BTS which answered the
request, not the one actually handling the related unanwared still
active paging request.
Fixes: 70a1d60a83
Related: SYS#6200
Change-Id: I8c6828f86b7ccbb2c4a09ca1aec859a2c597b679
This commit is contained in:
parent
4ca619f528
commit
346c6011bc
|
@ -567,7 +567,7 @@ void paging_request_stop(struct bsc_msc_data **msc_p, enum bsc_paging_reason *re
|
||||||
struct gsm_paging_request *req;
|
struct gsm_paging_request *req;
|
||||||
req = llist_first_entry(&bsub->active_paging_requests,
|
req = llist_first_entry(&bsub->active_paging_requests,
|
||||||
struct gsm_paging_request, bsub_entry);
|
struct gsm_paging_request, bsub_entry);
|
||||||
LOG_PAGING_BTS(req, bts, DPAG, LOGL_DEBUG, "Stop paging\n");
|
LOG_PAGING_BTS(req, req->bts, DPAG, LOGL_DEBUG, "Stop paging\n");
|
||||||
reasons |= req->reason;
|
reasons |= req->reason;
|
||||||
if (!paged_from_msc) {
|
if (!paged_from_msc) {
|
||||||
/* If this happened, it would be a bit weird: it means there was no Paging Request
|
/* If this happened, it would be a bit weird: it means there was no Paging Request
|
||||||
|
@ -575,7 +575,7 @@ void paging_request_stop(struct bsc_msc_data **msc_p, enum bsc_paging_reason *re
|
||||||
* pending on a different BTS. But why not return an MSC when we found one. */
|
* pending on a different BTS. But why not return an MSC when we found one. */
|
||||||
paged_from_msc = req->msc;
|
paged_from_msc = req->msc;
|
||||||
}
|
}
|
||||||
paging_remove_request(&bts->paging, req);
|
paging_remove_request(&req->bts->paging, req);
|
||||||
remaining--;
|
remaining--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue