[asterisk-commits] mmichelson: trunk r430314 - in /trunk: ./ res/res_pjsip_refer.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Jan 7 11:45:59 CST 2015
Author: mmichelson
Date: Wed Jan 7 11:45:56 2015
New Revision: 430314
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=430314
Log:
Fix ability to perform a remote attended transfer with PJSIP.
This fix has two parts:
* Corrected an error message to properly state that external_replaces is an extension. The
error message also prints what dialplan context the external_replaces extension was being
looked for in.
* Corrected the printing of the Replaces: header in an INVITE request. We were duplicating
"Replaces: " in the header.
ASTERISK-24376 #close
Reported by Matt Jordan
Review: https://reviewboard.asterisk.org/r/4296
........
Merged revisions 430313 from http://svn.asterisk.org/svn/asterisk/branches/13
Modified:
trunk/ (props changed)
trunk/res/res_pjsip_refer.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-13-merged' - no diff available.
Modified: trunk/res/res_pjsip_refer.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_pjsip_refer.c?view=diff&rev=430314&r1=430313&r2=430314
==============================================================================
--- trunk/res/res_pjsip_refer.c (original)
+++ trunk/res/res_pjsip_refer.c Wed Jan 7 11:45:56 2015
@@ -599,9 +599,16 @@
if (refer->replaces) {
char replaces[512];
-
- pjsip_hdr_print_on(refer->replaces, replaces, sizeof(replaces));
- pbx_builtin_setvar_helper(chan, "__SIPREPLACESHDR", S_OR(replaces, NULL));
+ char *replaces_val = NULL;
+ int len;
+
+ len = pjsip_hdr_print_on(refer->replaces, replaces, sizeof(replaces) - 1);
+ if (len != -1) {
+ /* pjsip_hdr_print_on does not NULL terminate the buffer */
+ replaces[len] = '\0';
+ replaces_val = replaces + sizeof("Replaces:");
+ }
+ pbx_builtin_setvar_helper(chan, "__SIPREPLACESHDR", replaces_val);
} else {
pbx_builtin_setvar_helper(chan, "SIPREPLACESHDR", NULL);
}
@@ -674,8 +681,8 @@
}
if (!ast_exists_extension(NULL, context, "external_replaces", 1, NULL)) {
- ast_log(LOG_ERROR, "Received REFER for remote session on channel '%s' from endpoint '%s' but 'external_replaces' context does not exist for handling\n",
- ast_channel_name(session->channel), ast_sorcery_object_get_id(session->endpoint));
+ ast_log(LOG_ERROR, "Received REFER for remote session on channel '%s' from endpoint '%s' but 'external_replaces' extension not found in context %s\n",
+ ast_channel_name(session->channel), ast_sorcery_object_get_id(session->endpoint), context);
return 404;
}
More information about the asterisk-commits
mailing list