[asterisk-commits] file: branch file/usecnt-cleanup r54524 - /team/file/usecnt-cleanup/main/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Feb 14 17:16:51 MST 2007


Author: file
Date: Wed Feb 14 18:16:50 2007
New Revision: 54524

URL: http://svn.digium.com/view/asterisk?view=rev&rev=54524
Log:
Add automatic unregistering for every module link possible (applications/dialplan functions/channel techs/etc).

Modified:
    team/file/usecnt-cleanup/main/cdr.c
    team/file/usecnt-cleanup/main/file.c
    team/file/usecnt-cleanup/main/loader.c

Modified: team/file/usecnt-cleanup/main/cdr.c
URL: http://svn.digium.com/view/asterisk/team/file/usecnt-cleanup/main/cdr.c?view=diff&rev=54524&r1=54523&r2=54524
==============================================================================
--- team/file/usecnt-cleanup/main/cdr.c (original)
+++ team/file/usecnt-cleanup/main/cdr.c Wed Feb 14 18:16:50 2007
@@ -138,7 +138,7 @@
 		return -1;
 
 	if (mod)
-		ast_module_link(mod, AST_MODULE_REGISTERED_CDR, i);
+		ast_module_link(mod, AST_MODULE_REGISTERED_CDR, (void*)name);
 	i->module = mod;
 	i->be = be;
 	ast_copy_string(i->name, name, sizeof(i->name));
@@ -160,7 +160,7 @@
 	AST_LIST_TRAVERSE_SAFE_BEGIN(&be_list, i, list) {
 		if (!strcasecmp(name, i->name)) {
 			if (i->module)
-				ast_module_unlink(i->module, AST_MODULE_REGISTERED_CDR, i);
+				ast_module_unlink(i->module, AST_MODULE_REGISTERED_CDR, (void*)name);
 			AST_LIST_REMOVE_CURRENT(&be_list, list);
 			if (option_verbose > 1)
 				ast_verbose(VERBOSE_PREFIX_2 "Unregistered '%s' CDR backend\n", name);

Modified: team/file/usecnt-cleanup/main/file.c
URL: http://svn.digium.com/view/asterisk/team/file/usecnt-cleanup/main/file.c?view=diff&rev=54524&r1=54523&r2=54524
==============================================================================
--- team/file/usecnt-cleanup/main/file.c (original)
+++ team/file/usecnt-cleanup/main/file.c Wed Feb 14 18:16:50 2007
@@ -83,7 +83,7 @@
 	}
 	*tmp = *f;
 	if (mod)
-		ast_module_link(mod, AST_MODULE_REGISTERED_FORMAT, tmp);
+		ast_module_link(mod, AST_MODULE_REGISTERED_FORMAT, (void*)f->name);
 	tmp->module = mod;
 	if (tmp->buf_size) {
 		/*
@@ -114,7 +114,7 @@
 	AST_RWLIST_TRAVERSE_SAFE_BEGIN(&formats, tmp, list) {
 		if (!strcasecmp(name, tmp->name)) {
 			if (tmp->module)
-				ast_module_unlink(tmp->module, AST_MODULE_REGISTERED_FORMAT, tmp);
+				ast_module_unlink(tmp->module, AST_MODULE_REGISTERED_FORMAT, (void*)name);
 			AST_RWLIST_REMOVE_CURRENT(&formats, list);
 			free(tmp);
 			res = 0;

Modified: team/file/usecnt-cleanup/main/loader.c
URL: http://svn.digium.com/view/asterisk/team/file/usecnt-cleanup/main/loader.c?view=diff&rev=54524&r1=54523&r2=54524
==============================================================================
--- team/file/usecnt-cleanup/main/loader.c (original)
+++ team/file/usecnt-cleanup/main/loader.c Wed Feb 14 18:16:50 2007
@@ -54,6 +54,8 @@
 #include "asterisk/pbx.h"
 
 #include "asterisk/cli.h"
+#include "asterisk/translate.h"
+#include "asterisk/file.h"
 
 #ifdef DLFCNCOMPAT
 #include "asterisk/dlfcn-compat.h"
@@ -491,6 +493,18 @@
 					ast_channel_unregister((const struct ast_channel_tech *)link->data);
 				else if (link->registered == AST_MODULE_REGISTERED_CLI)
 					res = ast_cli_unregister((struct ast_cli_entry*)link->data);
+				else if (link->registered == AST_MODULE_REGISTERED_SWITCH)
+					ast_unregister_switch((struct ast_switch*)link->data);
+				else if (link->registered == AST_MODULE_REGISTERED_CODEC)
+					res = ast_unregister_translator((struct ast_translator*)link->data);
+				else if (link->registered == AST_MODULE_REGISTERED_FORMAT)
+					res = ast_format_unregister((const char*)link->data);
+				else if (link->registered == AST_MODULE_REGISTERED_CDR)
+					ast_cdr_unregister((const char*)link->data);
+				else if (link->registered == AST_MODULE_REGISTERED_FORMAT)
+					res = ast_format_unregister((const char*)link->data);
+				else if (link->registered == AST_MODULE_REGISTERED_FUNCTION)
+					res = ast_custom_function_unregister((struct ast_custom_function*)link->data);
 				free(link);
 				/* Handle error from unregister process */
 			}



More information about the asterisk-commits mailing list