diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-12-15 03:48:48 +0100 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2017-12-20 23:07:10 +0100 |
commit | facd57ac565683895368a38ae50a85ebefdbffdf (patch) | |
tree | d53a4143bedb9f9b04e846ad52e4fad81627e2ac /src/libmsc/gsm_subscriber.c | |
parent | 2ff5bcdc387a7eb5135e5a54d55027502952c86b (diff) |
fix: properly cancel all Paging on IMSI Detach
It's not clear cut which code is responsible for canceling pending requests,
since the requests list is kept in vlr_subscr, but sending out Paging does
certainly not belong in the VLR. Place the requests cleanup in gsm_04_08.c.
Add to test_ms_timeout_paging() in msc_vlr_test_ms_timeout.c to verify that a
pending paging is canceled on IMSI Detach.
Change-Id: Ib8874a9d92f02b0826525b55518332f6899688fd
Diffstat (limited to 'src/libmsc/gsm_subscriber.c')
-rw-r--r-- | src/libmsc/gsm_subscriber.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libmsc/gsm_subscriber.c b/src/libmsc/gsm_subscriber.c index b3d38d1e8..1a7bf592c 100644 --- a/src/libmsc/gsm_subscriber.c +++ b/src/libmsc/gsm_subscriber.c @@ -52,6 +52,11 @@ #include <osmocom/msc/msc_ifaces.h> #include <osmocom/msc/a_iface.h> +void subscr_paging_cancel(struct vlr_subscr *vsub, enum gsm_paging_event event) +{ + subscr_paging_dispatch(GSM_HOOK_RR_PAGING, event, NULL, NULL, vsub); +} + int subscr_paging_dispatch(unsigned int hooknum, unsigned int event, struct msgb *msg, void *data, void *param) { @@ -132,7 +137,7 @@ int msc_paging_request(struct vlr_subscr *vsub) static void paging_response_timer_cb(void *data) { struct vlr_subscr *vsub = data; - subscr_paging_dispatch(GSM_HOOK_RR_PAGING, GSM_PAGING_EXPIRED, NULL, NULL, vsub); + subscr_paging_cancel(vsub, GSM_PAGING_EXPIRED); } /*! \brief Start a paging request for vsub, call cbfn(param) when done. |