[sr-dev] git:4.1: modules/dialog_ng: fixed double shm memory free

Daniel-Constantin Mierla miconda at gmail.com
Thu Nov 14 16:00:56 CET 2013


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

Author: Jason Penton <jason.penton at smilecoms.com>
Committer: Jason Penton <jason.penton at smilecoms.com>
Date:   Wed Nov 13 15:12:48 2013 +0200

modules/dialog_ng: fixed double shm memory free
	- happens when calling get_dlg function from cfg file

---

 modules/dialog_ng/dialog.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/modules/dialog_ng/dialog.c b/modules/dialog_ng/dialog.c
index 4e1b547..078d198 100644
--- a/modules/dialog_ng/dialog.c
+++ b/modules/dialog_ng/dialog.c
@@ -306,11 +306,17 @@ static int w_dlg_get(struct sip_msg *msg, char *ci, char *ft, char *tt)
 	dlg = get_dlg(&sc, &sf, &st, &dir);
 	if(dlg==NULL)
 		return -1;
-
-        unref_dlg(dlg, 1);
-        set_current_dialog(msg, dlg);
-        _dlg_ctx.dlg = dlg;
-        _dlg_ctx.dir = dir;
+	
+	/* 
+		note: we should unref the dlg here (from get_dlg). BUT, because we are setting the current dialog
+		we can ignore the unref... instead of unreffing and reffing again for the set_current_dialog. NB.
+		this function is generally called from the cfg file. If used via API, remember to unref the dlg
+		afterwards
+	*/	
+
+	set_current_dialog(msg, dlg);
+    _dlg_ctx.dlg = dlg;
+    _dlg_ctx.dir = dir;
 	return 1;
 }
 




More information about the sr-dev mailing list