mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 19:38:22 +00:00
Rearrange a bit of code in the generic CC recall operation.
By waiting to call the callback macro after the CC_INTERFACES, extension, priority, and context have been set, this information can be accessed more easily within the callback macro. Reported by Philippe Lindheimer. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@306575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
20
main/ccss.c
20
main/ccss.c
@@ -2495,15 +2495,7 @@ static void *generic_recall(void *data)
|
|||||||
ast_cc_failed(agent->core_id, "Failed to call back device %s/%s", tech, target);
|
ast_cc_failed(agent->core_id, "Failed to call back device %s/%s", tech, target);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (!ast_strlen_zero(callback_macro)) {
|
|
||||||
ast_log_dynamic_level(cc_logger_level, "Core %d: There's a callback macro configured for agent %s\n",
|
|
||||||
agent->core_id, agent->device_name);
|
|
||||||
if (ast_app_run_macro(NULL, chan, callback_macro, NULL)) {
|
|
||||||
ast_cc_failed(agent->core_id, "Callback macro to %s failed. Maybe a hangup?", agent->device_name);
|
|
||||||
ast_hangup(chan);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* We have a channel. It's time now to set up the datastore of recalled CC interfaces.
|
/* We have a channel. It's time now to set up the datastore of recalled CC interfaces.
|
||||||
* This will be a common task for all recall functions. If it were possible, I'd have
|
* This will be a common task for all recall functions. If it were possible, I'd have
|
||||||
* the core do it automatically, but alas I cannot. Instead, I will provide a public
|
* the core do it automatically, but alas I cannot. Instead, I will provide a public
|
||||||
@@ -2515,6 +2507,16 @@ static void *generic_recall(void *data)
|
|||||||
ast_copy_string(chan->exten, generic_pvt->exten, sizeof(chan->exten));
|
ast_copy_string(chan->exten, generic_pvt->exten, sizeof(chan->exten));
|
||||||
ast_copy_string(chan->context, generic_pvt->context, sizeof(chan->context));
|
ast_copy_string(chan->context, generic_pvt->context, sizeof(chan->context));
|
||||||
chan->priority = 1;
|
chan->priority = 1;
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(callback_macro)) {
|
||||||
|
ast_log_dynamic_level(cc_logger_level, "Core %d: There's a callback macro configured for agent %s\n",
|
||||||
|
agent->core_id, agent->device_name);
|
||||||
|
if (ast_app_run_macro(NULL, chan, callback_macro, NULL)) {
|
||||||
|
ast_cc_failed(agent->core_id, "Callback macro to %s failed. Maybe a hangup?", agent->device_name);
|
||||||
|
ast_hangup(chan);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
ast_cc_agent_recalling(agent->core_id, "Generic agent %s is recalling", agent->device_name);
|
ast_cc_agent_recalling(agent->core_id, "Generic agent %s is recalling", agent->device_name);
|
||||||
ast_pbx_start(chan);
|
ast_pbx_start(chan);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user