Module: sip-router Branch: master Commit: 8c7aa83346e18792d9a622c63c83cff81dcc144b URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=8c7aa833...
Author: Jason Penton jason.penton@smilecoms.com Committer: Jason Penton jason.penton@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; }