[asterisk-commits] mmichelson: branch group/CCSS r252082 - /team/group/CCSS/main/ccss.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Mar 12 15:12:16 CST 2010


Author: mmichelson
Date: Fri Mar 12 15:12:12 2010
New Revision: 252082

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=252082
Log:
Remove extraneous calls to call_destructor_with_no_monitor.

ast_handle_cc_control_frame liked to call this function a second
time. This removes the possibility and simplifies things a bit to
prevent crashes.


Modified:
    team/group/CCSS/main/ccss.c

Modified: team/group/CCSS/main/ccss.c
URL: http://svnview.digium.com/svn/asterisk/team/group/CCSS/main/ccss.c?view=diff&rev=252082&r1=252081&r2=252082
==============================================================================
--- team/group/CCSS/main/ccss.c (original)
+++ team/group/CCSS/main/ccss.c Fri Mar 12 15:12:12 2010
@@ -1880,33 +1880,28 @@
 
 	if (!(cc_interface = ao2_t_alloc(sizeof(*cc_interface) + device_name_len, cc_interface_destroy,
 					"Allocating new ast_cc_interface"))) {
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	if (!(cc_interface->config_params = ast_cc_config_params_init())) {
 		cc_unref(cc_interface, "Failed to allocate config params, unref interface");
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	if (!(monitor = ao2_t_alloc(sizeof(*monitor), cc_monitor_destroy, "Allocating new ast_cc_monitor"))) {
 		cc_unref(cc_interface, "Failed to allocate monitor, unref interface");
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	if (!(monitor->dialstring = ast_strdup(dialstring))) {
 		cc_unref(monitor, "Failed to copy dialable name. Unref monitor");
 		cc_unref(cc_interface, "Failed to copy dialable name");
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	if (!(monitor->callbacks = find_monitor_callbacks(cc_data->monitor_type))) {
 		cc_unref(monitor, "Failed to find monitor callbacks. Unref monitor");
 		cc_unref(cc_interface, "Failed to find monitor callbacks");
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
@@ -2527,7 +2522,6 @@
 	if (!cc_params) {
 		ast_log_dynamic_level(cc_logger_level, "Could not get CC parameters for %s\n",
 			caller);
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 	/* First, we need to kill off other pending CC offers from caller. If the caller is going
@@ -2541,27 +2535,23 @@
 	agent_count = count_agents(caller, recall_core_id);
 	if (agent_count >= ast_get_cc_max_agents(cc_params)) {
 		ast_log_dynamic_level(cc_logger_level, "Caller %s already has the maximum number of agents configured\n", caller);
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	/* Generic agents can only have a single outstanding CC request per caller. */
 	if (agent_count > 0 && ast_get_cc_agent_policy(cc_params) == AST_CC_AGENT_GENERIC) {
 		ast_log_dynamic_level(cc_logger_level, "Generic agents can only have a single outstanding request\n");
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	/* Next, we need to create the core instance for this call */
 	if (!(core_instance = ao2_t_alloc(sizeof(*core_instance), cc_core_instance_destructor, "Creating core instance for CC"))) {
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 
 	core_instance->core_id = core_id;
 	if (!(core_instance->agent = cc_agent_init(caller_chan, caller, core_instance->core_id, called_tree))) {
 		cc_unref(core_instance, "Couldn't allocate agent, unref core_instance");
-		call_destructor_with_no_monitor(cc_data->monitor_type, cc_data->private_data);
 		return NULL;
 	}
 




More information about the asterisk-commits mailing list