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)
+
+
+ add_expires_offset (int)
+
+ Add expires_offset value to expires before inserting into db/htable
+
+
+ Default value is 0
.
+
+
+
+ Set add_expires_offset parameter
+
+...
+modparam("presence", "add_expires_offset", 1)
+...
+
+
+
+
+
max_expires (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)
{