Module: sip-router Branch: master Commit: ca7f45d98faea9479b86e9206c4e2923a009782a URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=ca7f45d98faea9479b86e9206c4e2923a009782a Author: Anca Vamanu <anca.vamanu@1and1.ro> Committer: Anca Vamanu <anca.vamanu@1and1.ro> Date: Fri May 4 11:57:27 2012 +0300 modules_k/presence Fixed refresh_watcher function --- modules_k/presence/subscribe.c | 40 ++++++++++++++++++++++++++++------------ 1 files changed, 28 insertions(+), 12 deletions(-) diff --git a/modules_k/presence/subscribe.c b/modules_k/presence/subscribe.c index add1581..ae9e442 100644 --- a/modules_k/presence/subscribe.c +++ b/modules_k/presence/subscribe.c @@ -2225,9 +2225,10 @@ int refresh_watcher(str* pres_uri, str* watcher_uri, str* event, { unsigned int hash_code; subs_t* s, *s_copy; - pres_ev_t* ev; + pres_ev_t* ev; struct sip_uri uri; str user, domain; + subs_t *s_array = NULL; /* refresh status in subs_htable and send notify */ ev= contains_event(event, NULL); @@ -2262,28 +2263,43 @@ int refresh_watcher(str* pres_uri, str* watcher_uri, str* event, s->status= status; if(reason) s->reason= *reason; - + s_copy= mem_copy_subs(s, PKG_MEM_TYPE); if(s_copy== NULL) { LM_ERR("copying subs_t\n"); lock_release(&subs_htable[hash_code].lock); - return -1; + goto error; } - lock_release(&subs_htable[hash_code].lock); + s_copy->local_cseq++; - if(notify(s_copy, NULL, NULL, 0)< 0) - { - LM_ERR("in notify function\n"); - pkg_free(s_copy); - return -1; - } - pkg_free(s_copy); - lock_get(&subs_htable[hash_code].lock); + s_copy->next= s_array; + s_array= s_copy; } s= s->next; } + lock_release(&subs_htable[hash_code].lock); + + s = s_array; + while (s) { + if(notify(s, NULL, NULL, 0)< 0) { + LM_ERR("Failed to send Notify\n"); + } + s_copy = s; + s = s->next; + pkg_free(s_copy); + } + return 0; + +error: + s = s_array; + while (s) { + s_copy = s; + s = s->next; + pkg_free(s_copy); + } + return -1; } int get_db_subs_auth(subs_t* subs, int* found) _______________________________________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev