[sr-dev] git:master: registrar: allow randomization of expire value coming from UA
Øyvind Kolbu
oyvind.kolbu at usit.uio.no
Tue Mar 4 21:14:54 CET 2014
On 21.02.2014 21:14, Daniel-Constantin Mierla wrote:
> Module: sip-router
> Branch: master
> Commit: 806e967e2e39e0140b992719e10693b9c768d758
> URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=806e967e2e39e0140b992719e10693b9c768d758
>
> Author: Daniel-Constantin Mierla <miconda at gmail.com>
> Committer: Daniel-Constantin Mierla <miconda at gmail.com>
> Date: Fri Feb 21 21:07:43 2014 +0100
>
> registrar: allow randomization of expire value coming from UA
>
> - new parameter expire_range
> - requested in FS#249
>
[...]
> @@ -52,6 +53,8 @@ cfg_def_t registrar_cfg_def[] = {
> "Contains number of second to expire if no expire hf or contact expire present" },
> {"default_expires_range", CFG_VAR_INT | CFG_CB_ONLY_ONCE, 0, 100, 0, default_expires_range_update,
> "Percent from default_expires that will be used in generating the range for the expire interval"},
> + {"expires_range", CFG_VAR_INT | CFG_CB_ONLY_ONCE, 0, 100, 0, expires_range_update,
> + "Percent from incoming expires that will be used in generating the range for the expire interval"},
[...]
> diff --git a/modules/registrar/sip_msg.c b/modules/registrar/sip_msg.c
> index a02b050..7ce9c59 100644
> --- a/modules/registrar/sip_msg.c
> +++ b/modules/registrar/sip_msg.c
> @@ -67,11 +67,16 @@ static inline int get_expire_val(void)
> - return p->val + act_time;
> + range = cfg_get(registrar, registrar_cfg, default_expires_range);
> + if(likely(range==0))
> + return p->val + act_time;
> + return p->val + act_time - (float)range/100 * p->val
> + + ((float)(rand()%100)/100) * ((float)range/100 * p->val);
Wrong variable fetched, should have been:
range = cfg_get(registrar, registrar_cfg, expires_range);
Also for clients who do not use the Expires header, the above logic
does not work. E.g. a lot of Cisco devices sends like this:
Contact: "foo" <sip:12345 at 10.10.1.234:5060>;expires=3600.
All my Cisco devices got a similar Contact with expires=3600 back.
--
Øyvind
More information about the sr-dev
mailing list