From c7378df8660c28052f5c8791800e48c44621e5d4 Mon Sep 17 00:00:00 2001 From: Emmanuel Schmidbauer Date: Wed, 8 Jun 2016 10:15:48 -0400 Subject: [PATCH] presence: add new parameter `add_expires_offset` * defaults to 0 * adds `expires_offset` value to expires before being stored in htable or database * causes subscribes to not be removed prematurely --- modules/presence/doc/presence_admin.xml | 21 +++++++++++++++++++++ modules/presence/presence.c | 2 ++ modules/presence/presence.h | 1 + modules/presence/subscribe.c | 5 +++++ 4 files changed, 29 insertions(+) diff --git a/modules/presence/doc/presence_admin.xml b/modules/presence/doc/presence_admin.xml index 525d324a269..fac3ed45319 100644 --- a/modules/presence/doc/presence_admin.xml +++ b/modules/presence/doc/presence_admin.xml @@ -341,6 +341,27 @@ modparam("presence", "expires_offset", 10) + +
+ <varname>add_expires_offset</varname> (int) + + Add expires_offset value to expires before inserting into db/htable + + + Default value is 0. + + + + Set <varname>add_expires_offset</varname> parameter + +... +modparam("presence", "add_expires_offset", 1) +... + + + +
+
<varname>max_expires</varname> (int) diff --git a/modules/presence/presence.c b/modules/presence/presence.c index fe40745bcca..2431a443a14 100644 --- a/modules/presence/presence.c +++ b/modules/presence/presence.c @@ -145,6 +145,7 @@ char prefix='a'; int startup_time=0; str db_url = {0, 0}; int expires_offset = 0; +uint32_t add_expires_offset = 0; uint32_t min_expires= 0; int min_expires_action= 1; uint32_t max_expires= 3600; @@ -207,6 +208,7 @@ static param_export_t params[]={ { "force_delete", INT_PARAM, &pres_force_delete }, { "to_tag_pref", PARAM_STRING, &to_tag_pref }, { "expires_offset", INT_PARAM, &expires_offset }, + { "add_expires_offset", INT_PARAM, &add_expires_offset }, { "max_expires", INT_PARAM, &max_expires }, { "min_expires", INT_PARAM, &min_expires }, { "min_expires_action", INT_PARAM, &min_expires_action }, diff --git a/modules/presence/presence.h b/modules/presence/presence.h index 0068c9b16b5..da020f153d2 100644 --- a/modules/presence/presence.h +++ b/modules/presence/presence.h @@ -71,6 +71,7 @@ extern int pid; extern int startup_time; extern char *to_tag_pref; extern int expires_offset; +extern uint32_t add_expires_offset; extern str server_address; extern uint32_t min_expires; extern int min_expires_action; diff --git a/modules/presence/subscribe.c b/modules/presence/subscribe.c index f3a53c90043..ac969426feb 100644 --- a/modules/presence/subscribe.c +++ b/modules/presence/subscribe.c @@ -617,6 +617,11 @@ int update_subscription(struct sip_msg* msg, subs_t* subs, int to_tag_gen, } return 1; } + + if (add_expires_offset > 0) { + subs->expires = subs->expires + expires_offset; + } + /* if subscriptions are stored in memory, update them */ if(subs_dbmode != DB_ONLY) {