mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	add support for 'early loading' modules, so that nearly all configuration files can be read from Realtime storage
add warning for when file mapping is found but the engine is not available add warning for trying to map 'logger.conf', since it cannot be reliably mapped git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										38
									
								
								loader.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								loader.c
									
									
									
									
									
								
							| @@ -450,35 +450,53 @@ static const char *loadorder[] = | ||||
| 	NULL, | ||||
| }; | ||||
|  | ||||
| int load_modules() | ||||
| int load_modules(const int preload_only) | ||||
| { | ||||
| 	struct ast_config *cfg; | ||||
| 	struct ast_variable *v; | ||||
| 	char tmp[80]; | ||||
| 	if (option_verbose)  | ||||
| 		ast_verbose( "Asterisk Dynamic Loader Starting:\n"); | ||||
|  | ||||
| 	if (option_verbose) { | ||||
| 		if (preload_only) | ||||
| 			ast_verbose("Asterisk Dynamic Loader loading preload modules:\n"); | ||||
| 		else | ||||
| 			ast_verbose("Asterisk Dynamic Loader Starting:\n"); | ||||
| 	} | ||||
|  | ||||
| 	cfg = ast_config_load(AST_MODULE_CONFIG); | ||||
| 	if (cfg) { | ||||
| 		int doload; | ||||
|  | ||||
| 		/* Load explicitly defined modules */ | ||||
| 		v = ast_variable_browse(cfg, "modules"); | ||||
| 		while(v) { | ||||
| 			if (!strcasecmp(v->name, "load")) { | ||||
| 		for (v = ast_variable_browse(cfg, "modules"); v; v = v->next) { | ||||
| 			doload = 0; | ||||
|  | ||||
| 			if (preload_only) | ||||
| 				doload = !strcasecmp(v->name, "preload"); | ||||
| 			else | ||||
| 				doload = !strcasecmp(v->name, "load"); | ||||
|  | ||||
| 		       if (doload) { | ||||
| 				if (option_debug && !option_verbose) | ||||
| 					ast_log(LOG_DEBUG, "Loading module %s\n", v->value); | ||||
| 				if (option_verbose) { | ||||
| 					ast_verbose( VERBOSE_PREFIX_1 "[%s]", term_color(tmp, v->value, COLOR_BRWHITE, 0, sizeof(tmp))); | ||||
| 					ast_verbose(VERBOSE_PREFIX_1 "[%s]", term_color(tmp, v->value, COLOR_BRWHITE, 0, sizeof(tmp))); | ||||
| 					fflush(stdout); | ||||
| 				} | ||||
| 				if (__load_resource(v->value, cfg)) { | ||||
| 					ast_log(LOG_WARNING, "Loading module %s failed!\n", v->value); | ||||
| 					if (cfg) | ||||
| 						ast_config_destroy(cfg); | ||||
| 					ast_config_destroy(cfg); | ||||
| 					return -1; | ||||
| 				} | ||||
| 			} | ||||
| 			v=v->next; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (preload_only) { | ||||
| 		ast_config_destroy(cfg); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (!cfg || ast_true(ast_variable_retrieve(cfg, "modules", "autoload"))) { | ||||
| 		/* Load all modules */ | ||||
| 		DIR *mods; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user