Module: sip-router Branch: master Commit: 5f1e2caac5e6d68629a1a0956861bf7da6e05e31 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=5f1e2caa...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Tue Jan 3 18:02:39 2012 +0100
pua: is_dialog() returns 1 if there is a temporary dialog
- reported by Laura Testi
---
modules_k/pua/hash.c | 14 +++++++++++--- modules_k/pua/pua_db.c | 6 +++++- 2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/modules_k/pua/hash.c b/modules_k/pua/hash.c index ab8d145..85aa6fa 100644 --- a/modules_k/pua/hash.c +++ b/modules_k/pua/hash.c @@ -475,6 +475,9 @@ int get_record_id(ua_pres_t* dialog, str** rec_id) return 0; }
+/** + * return -1 on not found, 0 on established dialog, 1 on temporary dialog + */ int is_dialog(ua_pres_t* dialog) { int ret_code= 0; @@ -488,10 +491,15 @@ int is_dialog(ua_pres_t* dialog) hash_code= core_hash(dialog->pres_uri, dialog->watcher_uri, HASH_SIZE); lock_get(&HashT->p_records[hash_code].lock);
- if(get_dialog(dialog, hash_code)== NULL) - ret_code= -1; - else + if(get_dialog(dialog, hash_code)==NULL) + { + if(get_temporary_dialog(dialog, hash_code)==NULL) + ret_code= -1; + else + ret_code= 1; + } else { ret_code= 0; + } lock_release(&HashT->p_records[hash_code].lock); return ret_code; diff --git a/modules_k/pua/pua_db.c b/modules_k/pua/pua_db.c index 54e11c0..44c5fbc 100644 --- a/modules_k/pua/pua_db.c +++ b/modules_k/pua/pua_db.c @@ -761,7 +761,11 @@ int is_dialog_puadb(ua_pres_t *pres) /* no need to return here - drop thro */ }
- return(0); + /* established dialog */ + if(pres->to_tag.len>0) + return 0; + /* temporary dialog */ + return 1; }
/******************************************************************************/