are now specifically given a NO_DATA response without hitting the system
resolver. The library goes on to do the now-standard TXT lookup.
Use of dnsdb lookups is not affected.
-
+
+JH/19 Bug 2507: Modules: on handling a dynamic-module (lookups) open failure,
+ only retrieve the errormessage once. Previously two calls to dlerror()
+ were used, and the second one (for mainlog/paniclog) retrieved null
+ information.
Exim version 4.93
if (!(dl = dlopen(CS big_buffer, RTLD_NOW)))
{
- fprintf(stderr, "Error loading %s: %s\n", name, dlerror());
+ errormessage = dlerror();
+ fprintf(stderr, "Error loading %s: %s\n", name, errormessage);
moduleerrors++;
- log_write(0, LOG_MAIN|LOG_PANIC, "Error loading lookup module %s: %s\n", name, dlerror());
+ log_write(0, LOG_MAIN|LOG_PANIC, "Error loading lookup module %s: %s\n", name, errormessage);
continue;
}
void *dlhandle_curses = dlopen("libcurses." DYNLIB_FN_EXT, RTLD_GLOBAL|RTLD_LAZY);
dlhandle = dlopen("libreadline." DYNLIB_FN_EXT, RTLD_GLOBAL|RTLD_NOW);
-if (dlhandle_curses != NULL) dlclose(dlhandle_curses);
+if (dlhandle_curses) dlclose(dlhandle_curses);
-if (dlhandle != NULL)
+if (dlhandle)
{
/* Checked manual pages; at least in GNU Readline 6.1, the prototypes are:
* char * readline (const char *prompt);
*fn_addhist_ptr = (void(*)(const char*))dlsym(dlhandle, "add_history");
}
else
- {
DEBUG(D_any) debug_printf("failed to load readline: %s\n", dlerror());
- }
return dlhandle;
}