diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2006-08-25 16:14:00 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2006-08-25 16:14:00 +0000 |
commit | 970c6876c54e65bcdce11fea461188a15ac25802 (patch) | |
tree | aaca28ed5788504e420600855516f7ca89195a5d | |
parent | b56d1a76ce831e7089882e16747bfe5d0b956da2 (diff) |
instead of reverting this supposedly 'stupid' change, let's try to get it working properly
also eliminate a warning from dlopen() because some flags were missing on the second dlopen() call
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41087 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | main/loader.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/main/loader.c b/main/loader.c index 681f5ed34..4ece4ae6b 100644 --- a/main/loader.c +++ b/main/loader.c @@ -387,6 +387,14 @@ static struct ast_module *load_dynamic_module(const char *resource_in, unsigned on the already-opened library to what we want... if not, we have to close it and start over */ +#if HAVE_RTLD_NOLOAD + if (!dlopen(fn, RTLD_NOLOAD | (wants_global ? RTLD_LAZY | RTLD_GLOBAL : RTLD_NOW | RTLD_LOCAL))) { + ast_log(LOG_WARNING, "%s\n", dlerror()); + while (!dlclose(lib)); + free(resource_being_loaded); + return NULL; + } +#else while (!dlclose(lib)); resource_being_loaded = NULL; @@ -406,6 +414,7 @@ static struct ast_module *load_dynamic_module(const char *resource_in, unsigned /* since the module was successfully opened, and it registered itself the previous time we did that, we're going to assume it worked this time too :) */ +#endif AST_LIST_LAST(&module_list)->lib = lib; resource_being_loaded = NULL; |