summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/scripts/lookups-Makefile1
-rw-r--r--src/src/drtables.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/scripts/lookups-Makefile b/src/scripts/lookups-Makefile
index 31820ea2f..7f2dd1b9e 100755
--- a/src/scripts/lookups-Makefile
+++ b/src/scripts/lookups-Makefile
@@ -47,6 +47,7 @@ emit_module_rule() {
if want_dynamic "$lookup_name"
then
echo "MODS += ${mod_name}.so"
+ grep "^LOOKUP_${lookup_name}_" "$defs_source"
echo "LOOKUP_${mod_name}_INCLUDE = \$(LOOKUP_${lookup_name}_INCLUDE)"
echo "LOOKUP_${mod_name}_LIBS = \$(LOOKUP_${lookup_name}_LIBS)"
elif want_at_all "$lookup_name"
diff --git a/src/src/drtables.c b/src/src/drtables.c
index 276c0e67b..e54202f43 100644
--- a/src/src/drtables.c
+++ b/src/src/drtables.c
@@ -518,6 +518,13 @@ extern lookup_module_info whoson_lookup_module_info;
continue;
}
+ /* FreeBSD nsdispatch() can trigger dlerror() errors about
+ * _nss_cache_cycle_prevention_function; we need to clear the dlerror()
+ * state before calling dlsym(), so that any error afterwards only
+ * comes from dlsym().
+ */
+ errormsg = dlerror();
+
info = (struct lookup_module_info*) dlsym(dl, "_lookup_module_info");
if ((errormsg = dlerror()) != NULL) {
fprintf(stderr, "%s does not appear to be a lookup module (%s)\n", name, errormsg);