static int iax2_call(struct ast_channel *c, char *dest, int timeout)
{
struct sockaddr_in sin;
- char *l=NULL, *n=NULL;
+ char *l=NULL, *n=NULL, *tmpstr;
struct iax_ie_data ied;
char *defaultrdest = "s";
unsigned short callno = PTR_TO_CALLNO(c->tech_pvt);
cai.encmethods = iax2_encryption;
memset(&pds, 0, sizeof(pds));
- parse_dial_string(ast_strdupa(dest), &pds);
+ tmpstr = ast_strdupa(dest);
+ parse_dial_string(tmpstr, &pds);
if (!pds.exten)
pds.exten = defaultrdest;
int capability = iax2_capability;
struct parsed_dial_string pds;
struct create_addr_info cai;
+ char *tmpstr;
memset(&pds, 0, sizeof(pds));
- parse_dial_string(ast_strdupa(data), &pds);
+ tmpstr = ast_strdupa(data);
+ parse_dial_string(tmpstr, &pds);
memset(&cai, 0, sizeof(cai));
struct iax_ie_data ied;
struct create_addr_info cai;
struct parsed_dial_string pds;
+ char *tmpstr;
for (x=0; x<IAX_MAX_CALLS; x++) {
/* Look for an *exact match* call. Once a call is negotiated, it can only
memset(&ied, 0, sizeof(ied));
memset(&pds, 0, sizeof(pds));
- parse_dial_string(ast_strdupa(data), &pds);
+ tmpstr = ast_strdupa(data);
+ parse_dial_string(tmpstr, &pds);
/* Populate our address from the given */
if (create_addr(pds.peer, &sin, &cai))