diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-12-15 03:02:27 +0100 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2017-12-20 23:07:10 +0100 |
commit | 2ff5bcdc387a7eb5135e5a54d55027502952c86b (patch) | |
tree | 602296791799e12d7f1aab0f635694d211c69ac8 /include/osmocom/msc/gsm_data.h | |
parent | c1d69256f61e6bc7bdcbbd1b4df6a779c7883891 (diff) |
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
Diffstat (limited to 'include/osmocom/msc/gsm_data.h')
-rw-r--r-- | include/osmocom/msc/gsm_data.h | 2 |
1 files changed, 2 insertions, 0 deletions
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; |