|
|
@ -43,6 +43,12 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
|
|
|
#define RTLD_NOW 0
|
|
|
|
#define RTLD_NOW 0
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AST_MUTEX_DEFINE_STATIC(modlock);
|
|
|
|
|
|
|
|
AST_MUTEX_DEFINE_STATIC(reloadlock);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct module *module_list=NULL;
|
|
|
|
|
|
|
|
static int modlistver = 0;
|
|
|
|
|
|
|
|
|
|
|
|
static char expected_key[] =
|
|
|
|
static char expected_key[] =
|
|
|
|
{ 0x8e, 0x93, 0x22, 0x83, 0xf5, 0xc3, 0xc0, 0x75,
|
|
|
|
{ 0x8e, 0x93, 0x22, 0x83, 0xf5, 0xc3, 0xc0, 0x75,
|
|
|
|
0xff, 0x8b, 0xa9, 0xbe, 0x7c, 0x43, 0x74, 0x63 };
|
|
|
|
0xff, 0x8b, 0xa9, 0xbe, 0x7c, 0x43, 0x74, 0x63 };
|
|
|
@ -59,6 +65,11 @@ struct module {
|
|
|
|
struct module *next;
|
|
|
|
struct module *next;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct loadupdate {
|
|
|
|
|
|
|
|
int (*updater)(void);
|
|
|
|
|
|
|
|
struct loadupdate *next;
|
|
|
|
|
|
|
|
} *updaters = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
static int printdigest(unsigned char *d)
|
|
|
|
static int printdigest(unsigned char *d)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int x;
|
|
|
@ -97,17 +108,6 @@ static int verify_key(char *key)
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static struct loadupdate {
|
|
|
|
|
|
|
|
int (*updater)(void);
|
|
|
|
|
|
|
|
struct loadupdate *next;
|
|
|
|
|
|
|
|
} *updaters = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AST_MUTEX_DEFINE_STATIC(modlock);
|
|
|
|
|
|
|
|
AST_MUTEX_DEFINE_STATIC(reloadlock);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct module *module_list=NULL;
|
|
|
|
|
|
|
|
static int modlistver = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int ast_unload_resource(const char *resource_name, int force)
|
|
|
|
int ast_unload_resource(const char *resource_name, int force)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
struct module *m, *ml = NULL;
|
|
|
|
struct module *m, *ml = NULL;
|
|
|
@ -157,6 +157,7 @@ char *ast_module_helper(char *line, char *word, int pos, int state, int rpos, in
|
|
|
|
struct module *m;
|
|
|
|
struct module *m;
|
|
|
|
int which=0;
|
|
|
|
int which=0;
|
|
|
|
char *ret;
|
|
|
|
char *ret;
|
|
|
|
|
|
|
|
|
|
|
|
if (pos != rpos)
|
|
|
|
if (pos != rpos)
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
|
ast_mutex_lock(&modlock);
|
|
|
|
ast_mutex_lock(&modlock);
|
|
|
@ -502,6 +503,7 @@ int load_modules(const int preload_only)
|
|
|
|
DIR *mods;
|
|
|
|
DIR *mods;
|
|
|
|
struct dirent *d;
|
|
|
|
struct dirent *d;
|
|
|
|
int x;
|
|
|
|
int x;
|
|
|
|
|
|
|
|
|
|
|
|
/* Loop through each order */
|
|
|
|
/* Loop through each order */
|
|
|
|
for (x=0; x<sizeof(loadorder) / sizeof(loadorder[0]); x++) {
|
|
|
|
for (x=0; x<sizeof(loadorder) / sizeof(loadorder[0]); x++) {
|
|
|
|
mods = opendir((char *)ast_config_AST_MODULE_DIR);
|
|
|
|
mods = opendir((char *)ast_config_AST_MODULE_DIR);
|
|
|
|