aboutsummaryrefslogtreecommitdiffstats
path: root/loader.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-04-23 19:13:35 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-04-23 19:13:35 +0000
commitc8ceb9c9c5712a970aa70192c7800fc9e1e39aed (patch)
treea192f508bbf212d4b1fa470f6becd6f6dc96012e /loader.c
parentcdb0b6b8a3d95a44fe6af3a51cc038f14a822a1a (diff)
More OpenBSD patches
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@890 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'loader.c')
-rwxr-xr-xloader.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/loader.c b/loader.c
index cd18b353e..b47077a77 100755
--- a/loader.c
+++ b/loader.c
@@ -30,6 +30,10 @@
#include "asterisk.h"
#include "astconf.h"
+#ifndef RTLD_NOW
+#define RTLD_NOW 0
+#endif
+
static char expected_key[] =
{ 0x8e, 0x93, 0x22, 0x83, 0xf5, 0xc3, 0xc0, 0x75,
0xff, 0x8b, 0xa9, 0xbe, 0x7c, 0x43, 0x74, 0x63 };
@@ -174,14 +178,20 @@ int ast_load_resource(char *resource_name)
cfg = ast_load(AST_MODULE_CONFIG);
option_verbose = o;
if (cfg) {
+#ifdef RTLD_GLOBAL
if ((val = ast_variable_retrieve(cfg, "global", resource_name))
&& ast_true(val))
flags |= RTLD_GLOBAL;
+#endif
ast_destroy(cfg);
}
} else {
/* Resource modules are always loaded global and lazy */
+#ifdef RTLD_GLOBAL
flags = (RTLD_GLOBAL | RTLD_LAZY);
+#else
+ flags = RTLD_LAZY;
+#endif
}
if (ast_pthread_mutex_lock(&modlock))
@@ -215,31 +225,43 @@ int ast_load_resource(char *resource_name)
return -1;
}
m->load_module = dlsym(m->lib, "load_module");
+ if (m->load_module == NULL)
+ m->load_module = dlsym(m->lib, "_load_module");
if (!m->load_module) {
ast_log(LOG_WARNING, "No load_module in module %s\n", fn);
errors++;
}
m->unload_module = dlsym(m->lib, "unload_module");
+ if (m->unload_module == NULL)
+ m->unload_module = dlsym(m->lib, "_unload_module");
if (!m->unload_module) {
ast_log(LOG_WARNING, "No unload_module in module %s\n", fn);
errors++;
}
m->usecount = dlsym(m->lib, "usecount");
+ if (m->usecount == NULL)
+ m->usecount = dlsym(m->lib, "_usecount");
if (!m->usecount) {
ast_log(LOG_WARNING, "No usecount in module %s\n", fn);
errors++;
}
m->description = dlsym(m->lib, "description");
+ if (m->description == NULL)
+ m->description = dlsym(m->lib, "_description");
if (!m->description) {
ast_log(LOG_WARNING, "No description in module %s\n", fn);
errors++;
}
m->key = dlsym(m->lib, "key");
+ if (m->key == NULL)
+ m->key = dlsym(m->lib, "_key");
if (!m->key) {
ast_log(LOG_WARNING, "No key routine in module %s\n", fn);
errors++;
}
m->reload = dlsym(m->lib, "reload");
+ if (m->reload == NULL)
+ m->reload = dlsym(m->lib, "_reload");
if (m->key && !(key = m->key())) {
ast_log(LOG_WARNING, "Key routine returned NULL in module %s\n", fn);
errors++;