mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +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