From 2ff5bcdc387a7eb5135e5a54d55027502952c86b Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Fri, 15 Dec 2017 03:02:27 +0100 Subject: fix paging: add timeout to discard unsuccessful paging Currently, if there is no reply from the BSS / RNC, a subscriber will remain as "already paged" forever, and is never going to be paged again. Even on IMSI Detach, the pending request will keep a ref count on the vlr_subscr. Add a paging timeout, as gsm_network->paging_timeout and in the VTY on the 'msc' node as 'paging timeout (default|<1-65535>'. (There is a 'network' / 'T3113' in OsmoBSC, but to not confuse the two, give this a different name.) Add test_ms_timeout_paging() test to verify the timeout works. I hit this while testing Paging across multiple hNodeB, when a UE lost connection to the hNodeB. I noticed that no matter how long I wait, no Paging is sent out anymore, and found this embarrassing issue. Good grief... The choice of 10 seconds is taken from https://osmocom.org/issues/2756 Change-Id: I2db6f1e2ad341cf9c2cc7a21ec2fca0bae5b2db5 --- include/osmocom/msc/gsm_data.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/osmocom/msc/gsm_data.h') diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 6349fe0d3..1b0bff9df 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -344,6 +344,7 @@ enum gsm_auth_policy { GSM_AUTH_POLICY_REGEXP, /* accept IMSIs matching given regexp */ }; +#define MSC_PAGING_RESPONSE_TIMER_DEFAULT 10 struct gsm_tz { int override; /* if 0, use system's time zone instead. */ @@ -408,6 +409,7 @@ struct gsm_network { unsigned int num_bts; struct llist_head bts_list; + unsigned int paging_response_timer; /* timer to expire old location updates */ struct osmo_timer_list subscr_expire_timer; -- cgit v1.2.3