aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/gsm_subscriber.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2017-12-15 03:48:48 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2017-12-20 23:07:10 +0100
commitfacd57ac565683895368a38ae50a85ebefdbffdf (patch)
treed53a4143bedb9f9b04e846ad52e4fad81627e2ac /src/libmsc/gsm_subscriber.c
parent2ff5bcdc387a7eb5135e5a54d55027502952c86b (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.c7
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.