mirror of https://github.com/sipwise/kamailio.git
Change-Id: If37677aebaee90a6c8ca384095b101698e45f59fmr11.2
parent
70e6422d9d
commit
dbc9b1a745
@ -0,0 +1,88 @@
|
||||
From: Victor Seva <vseva@sipwise.com>
|
||||
Date: Wed, 21 Dec 2022 12:14:57 +0100
|
||||
Subject: pua_dialoginfo: use dlg_api.get_dlg_varval()
|
||||
|
||||
* rework creating str_list from dlg_var
|
||||
---
|
||||
src/modules/pua_dialoginfo/pua_dialoginfo.c | 37 +++++++++++++++--------------
|
||||
1 file changed, 19 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/src/modules/pua_dialoginfo/pua_dialoginfo.c b/src/modules/pua_dialoginfo/pua_dialoginfo.c
|
||||
index 94efcef..4d5503f 100644
|
||||
--- a/src/modules/pua_dialoginfo/pua_dialoginfo.c
|
||||
+++ b/src/modules/pua_dialoginfo/pua_dialoginfo.c
|
||||
@@ -550,6 +550,7 @@ struct str_list* get_str_list(unsigned short avp_flags, int_str avp_name) {
|
||||
list_current=list_current->next;
|
||||
} else {
|
||||
list_current=list_first= (struct str_list*) shm_malloc( len);
|
||||
+ list_current->next = 0;
|
||||
}
|
||||
|
||||
if (list_current==0) {
|
||||
@@ -574,8 +575,8 @@ struct str_list* get_str_list(unsigned short avp_flags, int_str avp_name) {
|
||||
struct dlginfo_cell* get_dialog_data(struct dlg_cell *dlg, int type, int disable_caller_publish, int disable_callee_publish)
|
||||
{
|
||||
struct dlginfo_cell *dlginfo;
|
||||
- int len;
|
||||
- str* s=NULL;
|
||||
+ int len, len_str_list;
|
||||
+ str s = STR_NULL;
|
||||
|
||||
// generate new random uuid
|
||||
if(sruid_next_safe(&_puadi_sruid) < 0) {
|
||||
@@ -651,39 +652,39 @@ struct dlginfo_cell* get_dialog_data(struct dlg_cell *dlg, int type, int disable
|
||||
|
||||
} else {
|
||||
if(caller_dlg_var.len>0
|
||||
- && (s = dlg_api.get_dlg_varref(dlg, &caller_dlg_var))!=0) {
|
||||
- dlginfo->pubruris_caller =
|
||||
- (struct str_list*)shm_malloc(sizeof(struct str_list) + s->len + 1);
|
||||
+ && dlg_api.get_dlg_varval(dlg, &caller_dlg_var, &s) == 0) {
|
||||
+ len_str_list = sizeof(struct str_list) + s.len + 1;
|
||||
+ dlginfo->pubruris_caller = (struct str_list*)shm_malloc(len_str_list);
|
||||
if (dlginfo->pubruris_caller==0) {
|
||||
SHM_MEM_ERROR;
|
||||
free_dlginfo_cell(dlginfo);
|
||||
return NULL;
|
||||
}
|
||||
- memset(dlginfo->pubruris_caller, 0, sizeof(struct str_list));
|
||||
+ memset(dlginfo->pubruris_caller, 0, len_str_list);
|
||||
dlginfo->pubruris_caller->s.s = (char*)dlginfo->pubruris_caller
|
||||
- + sizeof(sizeof(struct str_list));
|
||||
- memcpy(dlginfo->pubruris_caller->s.s, s->s, s->len);
|
||||
- dlginfo->pubruris_caller->s.s[s->len] = '\0';
|
||||
- dlginfo->pubruris_caller->s.len = s->len;
|
||||
+ + (len_str_list - s.len - 1);
|
||||
+ memcpy(dlginfo->pubruris_caller->s.s, s.s, s.len);
|
||||
+ dlginfo->pubruris_caller->s.s[s.len] = '\0';
|
||||
+ dlginfo->pubruris_caller->s.len = s.len;
|
||||
LM_DBG("Found pubruris_caller in dialog '%.*s'\n",
|
||||
dlginfo->pubruris_caller->s.len, dlginfo->pubruris_caller->s.s);
|
||||
}
|
||||
|
||||
if(callee_dlg_var.len>0
|
||||
- && (s = dlg_api.get_dlg_varref(dlg, &callee_dlg_var))!=0) {
|
||||
- dlginfo->pubruris_callee =
|
||||
- (struct str_list*)shm_malloc(sizeof(struct str_list) + s->len + 1);
|
||||
+ && dlg_api.get_dlg_varval(dlg, &callee_dlg_var, &s) == 0) {
|
||||
+ len_str_list = sizeof(struct str_list) + s.len + 1;
|
||||
+ dlginfo->pubruris_callee = (struct str_list*)shm_malloc(len_str_list);
|
||||
if (dlginfo->pubruris_callee==0) {
|
||||
SHM_MEM_ERROR;
|
||||
free_dlginfo_cell(dlginfo);
|
||||
return NULL;
|
||||
}
|
||||
- memset(dlginfo->pubruris_callee, 0, sizeof(struct str_list));
|
||||
+ memset(dlginfo->pubruris_callee, 0, len_str_list);
|
||||
dlginfo->pubruris_callee->s.s = (char*)dlginfo->pubruris_callee
|
||||
- + sizeof(sizeof(struct str_list));
|
||||
- memcpy(dlginfo->pubruris_callee->s.s, s->s, s->len);
|
||||
- dlginfo->pubruris_callee->s.s[s->len] = '\0';
|
||||
- dlginfo->pubruris_callee->s.len = s->len;
|
||||
+ + (len_str_list - s.len - 1);
|
||||
+ memcpy(dlginfo->pubruris_callee->s.s, s.s, s.len);
|
||||
+ dlginfo->pubruris_callee->s.s[s.len] = '\0';
|
||||
+ dlginfo->pubruris_callee->s.len = s.len;
|
||||
LM_DBG("Found pubruris_callee in dialog '%.*s'\n",
|
||||
dlginfo->pubruris_callee->s.len, dlginfo->pubruris_callee->s.s);
|
||||
}
|
Loading…
Reference in new issue