From 502f661694e7ae202dedf7851b20bf7ea85b5b6a Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 9 Oct 2008 23:55:32 +0000 Subject: [PATCH] Merged revisions 148160 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r148160 | mmichelson | 2008-10-09 18:54:59 -0500 (Thu, 09 Oct 2008) | 14 lines The priority was unnecessary for the manager atxfer, so it has been removed. Furthermore, now we actually use the Context argument passed to set the transfer context and don't error out if no context is specified. This addresses the actual problems outlined in issue 12158. Regarding the other points brought up, regarding the inability to not transfer to extensions which cannot be represented by DTMF, it is not enough of a constraint that it is worth attempting to rework the feature. (closes issue #12158) Reported by: davidw ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@148161 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/manager.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/main/manager.c b/main/manager.c index 4aa1be631f..5dbc781e94 100644 --- a/main/manager.c +++ b/main/manager.c @@ -2087,11 +2087,9 @@ static int action_atxfer(struct mansession *s, const struct message *m) const char *name = astman_get_header(m, "Channel"); const char *exten = astman_get_header(m, "Exten"); const char *context = astman_get_header(m, "Context"); - const char *priority = astman_get_header(m, "Priority"); struct ast_channel *chan = NULL; struct ast_call_feature *atxfer_feature = NULL; char *feature_code = NULL; - int priority_int = 0; if (ast_strlen_zero(name)) { astman_send_error(s, m, "No channel specified"); @@ -2101,19 +2099,6 @@ static int action_atxfer(struct mansession *s, const struct message *m) astman_send_error(s, m, "No extension specified"); return 0; } - if (ast_strlen_zero(context)) { - astman_send_error(s, m, "No context specified"); - return 0; - } - if (ast_strlen_zero(priority)) { - astman_send_error(s, m, "No priority specified"); - return 0; - } - - if (sscanf(priority, "%d", &priority_int) != 1 && (priority_int = ast_findlabel_extension(NULL, context, exten, priority, NULL)) < 1) { - astman_send_error(s, m, "Invalid Priority"); - return 0; - } if (!(atxfer_feature = ast_find_call_feature("atxfer"))) { astman_send_error(s, m, "No attended transfer feature found"); @@ -2125,6 +2110,10 @@ static int action_atxfer(struct mansession *s, const struct message *m) return 0; } + if (!ast_strlen_zero(context)) { + pbx_builtin_setvar_helper(chan, "TRANSFER_CONTEXT", context); + } + for (feature_code = atxfer_feature->exten; feature_code && *feature_code; ++feature_code) { struct ast_frame f = {AST_FRAME_DTMF, *feature_code}; ast_queue_frame(chan, &f);