Skip to content

Commit

Permalink
presence: configurable matching criteria to remove subscriptions from…
Browse files Browse the repository at this point in the history
… memory

- adjusted the commit 74d7395, being
  reported that subscriptions are not found (Jan Gaida)
  • Loading branch information
miconda committed Jan 3, 2015
1 parent 02ca141 commit 85029d4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
23 changes: 22 additions & 1 deletion modules/presence/hash.c
Expand Up @@ -42,6 +42,13 @@
#include "hash.h"
#include "notify.h"

/* matching mode when removing subscriptions from memory */
extern int pres_subs_remove_match;

/**
* create the subscription hash table in shared memory
* - hash_size: number of slots
*/
shtable_t new_shtable(int hash_size)
{
shtable_t htable= NULL;
Expand Down Expand Up @@ -287,12 +294,26 @@ int delete_shtable(shtable_t htable,unsigned int hash_code,subs_t* subs)

while(s)
{
if(s->callid.len==subs->callid.len
if(pres_subs_remove_match==0) {
/* match on to-tag only (unique, local generated - faster) */
if(s->to_tag.len==subs->to_tag.len
&& strncmp(s->to_tag.s,subs->to_tag.s,subs->to_tag.len)==0)
{
found = 0;
}
} else {
/* match on all dialog attributes (distributed systems) */
if(s->callid.len==subs->callid.len
&& s->to_tag.len==subs->to_tag.len
&& s->from_tag.len==subs->from_tag.len
&& strncmp(s->callid.s,subs->callid.s,subs->callid.len)==0
&& strncmp(s->to_tag.s,subs->to_tag.s,subs->to_tag.len)==0
&& strncmp(s->from_tag.s,subs->from_tag.s,subs->from_tag.len)==0)
{
found = 0;
}
}
if(found==0)
{
found= s->local_cseq +1;
ps->next= s->next;
Expand Down
2 changes: 2 additions & 0 deletions modules/presence/presence.c
Expand Up @@ -98,6 +98,7 @@ int pres_fetch_rows = 500;
int library_mode= 0;
str server_address= {0, 0};
evlist_t* EvList= NULL;
int pres_subs_remove_match = 0;

/* to tag prefix */
char* to_tag_pref = "10";
Expand Down Expand Up @@ -205,6 +206,7 @@ static param_export_t params[]={
{ "fetch_rows", INT_PARAM, &pres_fetch_rows},
{ "db_table_lock_type", INT_PARAM, &db_table_lock_type},
{ "local_log_level", PARAM_INT, &pres_local_log_level},
{ "subs_remove_match", PARAM_INT, &pres_subs_remove_match},
{0,0,0}
};

Expand Down

0 comments on commit 85029d4

Please sign in to comment.