diff options
author | David Vossel <dvossel@digium.com> | 2010-05-05 19:13:57 +0000 |
---|---|---|
committer | David Vossel <dvossel@digium.com> | 2010-05-05 19:13:57 +0000 |
commit | f16625b7a05ba41135140a3913fa1c9ecd8eda2f (patch) | |
tree | 4fc9049bff057426ddf1ceb0a926021f4a3f7d83 /channels | |
parent | 35eeb71ead595c78f6c855abdc67a7eac0a4a74e (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.c | 3 |
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)); } |