#define RTLD_LOCAL (0)
#endif
+#define fr_dlopenext lt_dlopenext
+#ifndef LT_SHREXT
+#ifdef __APPLE__
+#define LT_SHREXT ".so"
+#elif defined (WIN32)
+#define LT_SHREXT ".dll"
+#else
+#define LT_SHREXT ".dylib"
+#endif
+#endif
+
lt_dlhandle lt_dlopenext(const char *name)
{
char buffer[256];
/*
* FIXME: Make this configurable...
*/
- strlcat(buffer, ".so", sizeof(buffer));
+ strlcat(buffer, LT_SHREXT, sizeof(buffer));
return dlopen(buffer, RTLD_NOW | RTLD_LOCAL);
}
int lt_dlclose(lt_dlhandle handle)
{
+ if (!handle) return 0;
+
return dlclose(handle);
}
{ NULL, NULL }
};
+#define fr_dlopenext lt_dlopenext
lt_dlhandle lt_dlopenext(const char *name)
{
int i;
{
module_entry_t myentry;
module_entry_t *node;
- lt_dlhandle handle;
+ lt_dlhandle handle = NULL;
char module_struct[256];
char *p;
const module_t *module;
if (node) return node;
/*
+ * Link to the module's rlm_FOO{} module structure.
+ *
+ * The module_name variable has the version number
+ * embedded in it, and we don't want that here.
+ */
+ strcpy(module_struct, module_name);
+ p = strrchr(module_struct, '-');
+ if (p) *p = '\0';
+
+#if defined(WITHOUT_LIBLTDL) && defined (WITH_DLOPEN) && defined(RTLD_SELF)
+ module = lt_dlsym(RTLD_SELF, module_struct);
+ if (module) goto open_self;
+#endif
+
+ /*
* Keep the handle around so we can dlclose() it.
*/
handle = fr_dlopenext(module_name);
return NULL;
}
- /*
- * Link to the module's rlm_FOO{} module structure.
- *
- * The module_name variable has the version number
- * embedded in it, and we don't want that here.
- */
- strcpy(module_struct, module_name);
- p = strrchr(module_struct, '-');
- if (p) *p = '\0';
-
DEBUG3(" (Loaded %s, checking if it's valid)", module_name);
/*
lt_dlclose(handle);
return NULL;
}
+
+#if defined(WITHOUT_LIBLTDL) && defined (WITH_DLOPEN) && defined(RTLD_SELF)
+ open_self:
+#endif
/*
* Before doing anything else, check if it's sane.
*/
} else {
print_inst:
check_config_safe = TRUE;
- cf_log_module(cs, "Instantiating %s", instname);
+ cf_log_module(cs, "Instantiating module \"%s\" from file %s",
+ instname, cf_section_filename(cs));
}
/*
section_type_value[comp].typename);
}
}
-
+
+ if (server->subcs[comp]) {
+ if (idx == 0) {
+ RDEBUG("# Executing section %s from file %s",
+ section_type_value[comp].section,
+ cf_section_filename(server->subcs[comp]));
+ } else {
+ RDEBUG("# Executing group from file %s",
+ cf_section_filename(server->subcs[comp]));
+ }
+ }
request->component = section_type_value[comp].section;
rcode = modcall(comp, list, request);
request->module = "";
- request->component = "";
+ request->component = "<core>";
return rcode;
}
indexed_modcallable *c;
if (name) {
- cf_log_info(cs, "server %s {", name);
+ cf_log_info(cs, "server %s { # from file %s",
+ name, cf_section_filename(cs));
} else {
- cf_log_info(cs, "server {");
+ cf_log_info(cs, "server { # from file %s",
+ cf_section_filename(cs));
}
cf_log_info(cs, " modules {");
* proxying.
*/
if (!mainconfig.proxy_requests &&
- ((comp == PW_PRE_PROXY_TYPE) ||
- (comp == PW_PRE_PROXY_TYPE))) {
+ ((comp == RLM_COMPONENT_PRE_PROXY) ||
+ (comp == RLM_COMPONENT_POST_PROXY))) {
continue;
}
#endif