[sr-dev] git:3.3: dialog: fix for is_in_profile()

Daniel-Constantin Mierla miconda at gmail.com
Tue Jan 22 13:29:26 CET 2013


Module: sip-router
Branch: 3.3
Commit: a1502e5ca1470276ca6d7c82956fee9a5390348b
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=a1502e5ca1470276ca6d7c82956fee9a5390348b

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Wed Jan 16 22:37:08 2013 +0100

dialog: fix for is_in_profile()

- function was broken, reported by Klaus Darilion
(cherry picked from commit 83eafc8d8f767f4705d5f76ad0ffd4349a06c927)

---

 modules_k/dialog/dlg_profile.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/modules_k/dialog/dlg_profile.c b/modules_k/dialog/dlg_profile.c
index 3317216..370f370 100644
--- a/modules_k/dialog/dlg_profile.c
+++ b/modules_k/dialog/dlg_profile.c
@@ -613,6 +613,7 @@ int is_dlg_in_profile(struct sip_msg *msg, struct dlg_profile_table *profile,
 	struct dlg_cell *dlg;
 	struct dlg_profile_link *linker;
 	struct dlg_entry *d_entry;
+	int ret;
 
 	/* get current dialog */
 	dlg = dlg_get_msg_dialog(msg);
@@ -620,6 +621,7 @@ int is_dlg_in_profile(struct sip_msg *msg, struct dlg_profile_table *profile,
 	if (dlg==NULL)
 		return -1;
 
+	ret = -1;
 	/* check the dialog linkers */
 	d_entry = &d_table->entries[dlg->h_entry];
 	dlg_lock( d_table, d_entry);
@@ -627,10 +629,12 @@ int is_dlg_in_profile(struct sip_msg *msg, struct dlg_profile_table *profile,
 		if (linker->profile==profile) {
 			if (profile->has_value==0) {
 				dlg_unlock( d_table, d_entry);
+				ret = 1;
 				goto done;
 			} else if (value && value->len==linker->hash_linker.value.len &&
 			memcmp(value->s,linker->hash_linker.value.s,value->len)==0){
 				dlg_unlock( d_table, d_entry);
+				ret = 1;
 				goto done;
 			}
 			/* allow further search - maybe the dialog is inserted twice in
@@ -642,7 +646,7 @@ int is_dlg_in_profile(struct sip_msg *msg, struct dlg_profile_table *profile,
 
 done:
 	dlg_release(dlg);
-	return -1;
+	return ret;
 }
 
 




More information about the sr-dev mailing list