aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/module.h9
-rw-r--r--main/loader.c11
2 files changed, 12 insertions, 8 deletions
diff --git a/include/asterisk/module.h b/include/asterisk/module.h
index 3e1667ed0..b5c96f8a1 100644
--- a/include/asterisk/module.h
+++ b/include/asterisk/module.h
@@ -58,10 +58,11 @@ enum ast_module_unload_mode {
};
enum ast_module_load_result {
- AST_MODULE_LOAD_SUCCESS = 0, /*!< Module loaded and configured */
- AST_MODULE_LOAD_DECLINE = 1, /*!< Module is not configured */
- AST_MODULE_LOAD_SKIP = 2, /*!< Module was skipped for some reason */
- AST_MODULE_LOAD_FAILURE = -1, /*!< Module could not be loaded properly */
+ AST_MODULE_LOAD_SUCCESS = 0, /*!< Module loaded and configured */
+ AST_MODULE_LOAD_DECLINE = 1, /*!< Module is not configured */
+ AST_MODULE_LOAD_SKIP = 2, /*!< Module was skipped for some reason */
+ AST_MODULE_LOAD_PRIORITY = 3, /*!< Module is not loaded yet, but is added to prioity heap */
+ AST_MODULE_LOAD_FAILURE = -1, /*!< Module could not be loaded properly */
};
/*!
diff --git a/main/loader.c b/main/loader.c
index e6e688307..ba6af732d 100644
--- a/main/loader.c
+++ b/main/loader.c
@@ -743,9 +743,8 @@ static enum ast_module_load_result start_resource(struct ast_module *mod)
mod->flags.declined = 1;
break;
case AST_MODULE_LOAD_FAILURE:
- break;
- case AST_MODULE_LOAD_SKIP:
- /* modules should never return this value */
+ case AST_MODULE_LOAD_SKIP: /* modules should never return this value */
+ case AST_MODULE_LOAD_PRIORITY:
break;
}
@@ -807,7 +806,7 @@ static enum ast_module_load_result load_resource(const char *resource_name, unsi
if (resource_heap) {
ast_heap_push(resource_heap, mod);
- res = AST_MODULE_LOAD_SKIP;
+ res = AST_MODULE_LOAD_PRIORITY;
} else {
res = start_resource(mod);
}
@@ -893,6 +892,9 @@ static int load_resource_list(struct load_order *load_order, unsigned int global
goto done;
case AST_MODULE_LOAD_SKIP:
break;
+ case AST_MODULE_LOAD_PRIORITY:
+ AST_LIST_REMOVE_CURRENT(entry);
+ break;
}
}
AST_LIST_TRAVERSE_SAFE_END;
@@ -908,6 +910,7 @@ static int load_resource_list(struct load_order *load_order, unsigned int global
res = -1;
goto done;
case AST_MODULE_LOAD_SKIP:
+ case AST_MODULE_LOAD_PRIORITY:
break;
}
}