summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorDavid Vossel <dvossel@digium.com>2010-05-05 19:13:57 +0000
committerDavid Vossel <dvossel@digium.com>2010-05-05 19:13:57 +0000
commitf16625b7a05ba41135140a3913fa1c9ecd8eda2f (patch)
tree4fc9049bff057426ddf1ceb0a926021f4a3f7d83 /channels
parent35eeb71ead595c78f6c855abdc67a7eac0a4a74e (diff)
fixes sip native transfer
The Refer-To header field containing the Replaces header in the URI was not being decoded properly. This caused invalid parsing between the caller id field and the domain resulting in a failed transfer. (closes issue #17284) Reported by: dvossel git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@261316 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 876ca3691..3f8342546 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13737,6 +13737,7 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi
/* 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';
}
@@ -13754,7 +13755,6 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi
*to = '\0';
if ((to = strchr(ptr, ';')))
*to = '\0';
- ast_uri_decode(ptr);
ast_copy_string(referdata->replaces_callid_totag, ptr, sizeof(referdata->replaces_callid_totag));
}
@@ -13764,7 +13764,6 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi
*to = '\0';
if ((to = strchr(ptr, ';')))
*to = '\0';
- ast_uri_decode(ptr);
ast_copy_string(referdata->replaces_callid_fromtag, ptr, sizeof(referdata->replaces_callid_fromtag));
}