diff options
-rwxr-xr-x | src/scripts/lookups-Makefile | 1 | ||||
-rw-r--r-- | src/src/drtables.c | 7 |
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); |