[Freeswitch-svn] [commit] r5595 - freeswitch/trunk/src/mod/xml_int/mod_xml_cdr

Freeswitch SVN anthm at freeswitch.org
Mon Aug 13 19:37:22 EDT 2007


Author: anthm
Date: Mon Aug 13 19:37:22 2007
New Revision: 5595

Modified:
   freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c

Log:
fix missing deref of root xml registry in xml_cdr that causes a hang

Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c
==============================================================================
--- freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c	(original)
+++ freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c	Mon Aug 13 19:37:22 2007
@@ -198,7 +198,7 @@
 {
 	char *cf = "xml_cdr.conf";
 	switch_xml_t cfg, xml, settings, param;
-
+	switch_status_t status = SWITCH_STATUS_SUCCESS;
 
 	/* test global state handlers */
 	switch_core_add_state_handler(&state_handlers);
@@ -212,7 +212,7 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);
 		return SWITCH_STATUS_TERM;
 	}
-
+	
 	if ((settings = switch_xml_child(cfg, "settings"))) {
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
 			char *var = (char *) switch_xml_attr_soft(param, "name");
@@ -252,13 +252,15 @@
 	if(!switch_strlen_zero(globals.url) && switch_strlen_zero(globals.errLogDir)) {
 		if ((globals.errLogDir = switch_mprintf("%s/xml_cdr", SWITCH_GLOBAL_dirs.log_dir))) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
-			return SWITCH_STATUS_FALSE;
+			status = SWITCH_STATUS_FALSE;
+			goto done;
 		}
 	}
 
 
-	/* indicate that the module should continue to be loaded */
-	return SWITCH_STATUS_SUCCESS;
+ done:
+	switch_xml_free(xml);
+	return status;
 }
 
 



More information about the Freeswitch-svn mailing list