Merged revisions 173967-173968 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r173967 | file | 2009-02-06 13:14:15 -0400 (Fri, 06 Feb 2009) | 4 lines Some clients do not put the call-id for replaces at the beginning, so support it being anywhere in the string. (closes issue #14350) Reported by: fhackenberger ........ r173968 | file | 2009-02-06 13:15:01 -0400 (Fri, 06 Feb 2009) | 2 lines Remove a debug message I put in by accident. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@173974 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
647b68ec23
commit
550f7f1e65
|
@ -12450,49 +12450,46 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi
|
|||
}
|
||||
|
||||
/* Check for arguments in the refer_to header */
|
||||
if ((ptr = strchr(refer_to, '?'))) { /* Search for arguments */
|
||||
*ptr++ = '\0';
|
||||
if (!strncasecmp(ptr, "REPLACES=", 9)) {
|
||||
char *to = NULL, *from = NULL;
|
||||
|
||||
/* This is an attended transfer */
|
||||
referdata->attendedtransfer = 1;
|
||||
ast_copy_string(referdata->replaces_callid, ptr+9, sizeof(referdata->replaces_callid));
|
||||
ast_uri_decode(referdata->replaces_callid);
|
||||
if ((ptr = strchr(referdata->replaces_callid, ';'))) /* Find options */ {
|
||||
*ptr++ = '\0';
|
||||
}
|
||||
|
||||
if (ptr) {
|
||||
/* Find the different tags before we destroy the string */
|
||||
to = strcasestr(ptr, "to-tag=");
|
||||
from = strcasestr(ptr, "from-tag=");
|
||||
}
|
||||
|
||||
/* Grab the to header */
|
||||
if (to) {
|
||||
ptr = to + 7;
|
||||
if ((to = strchr(ptr, '&')))
|
||||
*to = '\0';
|
||||
if ((to = strchr(ptr, ';')))
|
||||
*to = '\0';
|
||||
ast_copy_string(referdata->replaces_callid_totag, ptr, sizeof(referdata->replaces_callid_totag));
|
||||
}
|
||||
|
||||
if (from) {
|
||||
ptr = from + 9;
|
||||
if ((to = strchr(ptr, '&')))
|
||||
*to = '\0';
|
||||
if ((to = strchr(ptr, ';')))
|
||||
*to = '\0';
|
||||
ast_copy_string(referdata->replaces_callid_fromtag, ptr, sizeof(referdata->replaces_callid_fromtag));
|
||||
}
|
||||
|
||||
if (!sip_cfg.pedanticsipchecking)
|
||||
ast_debug(2, "Attended transfer: Will use Replace-Call-ID : %s (No check of from/to tags)\n", referdata->replaces_callid );
|
||||
else
|
||||
ast_debug(2, "Attended transfer: Will use Replace-Call-ID : %s F-tag: %s T-tag: %s\n", referdata->replaces_callid, referdata->replaces_callid_fromtag ? referdata->replaces_callid_fromtag : "<none>", referdata->replaces_callid_totag ? referdata->replaces_callid_totag : "<none>" );
|
||||
if ((ptr = strcasestr(refer_to, "replaces="))) {
|
||||
char *to = NULL, *from = NULL;
|
||||
|
||||
/* This is an attended transfer */
|
||||
referdata->attendedtransfer = 1;
|
||||
ast_copy_string(referdata->replaces_callid, ptr+9, sizeof(referdata->replaces_callid));
|
||||
ast_uri_decode(referdata->replaces_callid);
|
||||
if ((ptr = strchr(referdata->replaces_callid, ';'))) /* Find options */ {
|
||||
*ptr++ = '\0';
|
||||
}
|
||||
|
||||
if (ptr) {
|
||||
/* Find the different tags before we destroy the string */
|
||||
to = strcasestr(ptr, "to-tag=");
|
||||
from = strcasestr(ptr, "from-tag=");
|
||||
}
|
||||
|
||||
/* Grab the to header */
|
||||
if (to) {
|
||||
ptr = to + 7;
|
||||
if ((to = strchr(ptr, '&')))
|
||||
*to = '\0';
|
||||
if ((to = strchr(ptr, ';')))
|
||||
*to = '\0';
|
||||
ast_copy_string(referdata->replaces_callid_totag, ptr, sizeof(referdata->replaces_callid_totag));
|
||||
}
|
||||
|
||||
if (from) {
|
||||
ptr = from + 9;
|
||||
if ((to = strchr(ptr, '&')))
|
||||
*to = '\0';
|
||||
if ((to = strchr(ptr, ';')))
|
||||
*to = '\0';
|
||||
ast_copy_string(referdata->replaces_callid_fromtag, ptr, sizeof(referdata->replaces_callid_fromtag));
|
||||
}
|
||||
|
||||
if (!sip_cfg.pedanticsipchecking)
|
||||
ast_debug(2, "Attended transfer: Will use Replace-Call-ID : %s (No check of from/to tags)\n", referdata->replaces_callid );
|
||||
else
|
||||
ast_debug(2, "Attended transfer: Will use Replace-Call-ID : %s F-tag: %s T-tag: %s\n", referdata->replaces_callid, referdata->replaces_callid_fromtag ? referdata->replaces_callid_fromtag : "<none>", referdata->replaces_callid_totag ? referdata->replaces_callid_totag : "<none>" );
|
||||
}
|
||||
|
||||
if ((ptr = strchr(refer_to, '@'))) { /* Separate domain */
|
||||
|
|
Loading…
Reference in New Issue