gboolean
rspamd_rcl_add_lua_plugins_path (struct rspamd_config *cfg,
const gchar *path,
+ gboolean main_path,
GHashTable *modules_seen,
GError **err)
{
if (stat (path, &st) == -1) {
- if (errno != ENOENT) {
+ if (errno != ENOENT || main_path) {
g_set_error (err,
CFG_RCL_ERROR,
errno,
return FALSE;
}
else {
- msg_info_config ("plugins path %s is absent, skip it", path);
+ msg_debug_config ("optional plugins path %s is absent, skip it", path);
return TRUE;
}
if (ucl_object_tostring_safe (cur, &data)) {
if (!rspamd_rcl_add_lua_plugins_path (cfg,
rspamd_mempool_strdup (cfg->cfg_pool, data),
+ TRUE,
mods_seen,
err)) {
return FALSE;
if (ucl_object_tostring_safe (cur, &data)) {
if (!rspamd_rcl_add_lua_plugins_path (cfg,
rspamd_mempool_strdup (cfg->cfg_pool, data),
+ FALSE,
+ mods_seen,
+ err)) {
+ return FALSE;
+ }
+ }
+ }
+ }
+
+ val = ucl_object_lookup (obj, "try_path");
+
+ if (val) {
+ LL_FOREACH (val, cur) {
+ if (ucl_object_tostring_safe (cur, &data)) {
+ if (!rspamd_rcl_add_lua_plugins_path (cfg,
+ rspamd_mempool_strdup (cfg->cfg_pool, data),
+ FALSE,
mods_seen,
err)) {
return FALSE;
}
else if (ucl_object_tostring_safe (obj, &data)) {
if (!rspamd_rcl_add_lua_plugins_path (cfg,
- rspamd_mempool_strdup (cfg->cfg_pool, data), NULL, err)) {
+ rspamd_mempool_strdup (cfg->cfg_pool, data), TRUE, NULL, err)) {
return FALSE;
}
}
if ((bk = rspamd_sqlite3_opendb (cfg->cfg_pool, stf, filename,
stf->opts, TRUE, &err)) == NULL) {
- msg_err_config ("cannot open sqlite3 db: %e", err);
+ msg_err_config ("cannot open sqlite3 db %s: %e", filename, err);
g_error_free (err);
return NULL;
}
rspamd_rcl_config_init (cfg, NULL);
lua_pushboolean (cfg->lua_state, true);
lua_setglobal (cfg->lua_state, "confighelp");
- rspamd_rcl_add_lua_plugins_path (cfg, plugins_path, NULL, NULL);
+ rspamd_rcl_add_lua_plugins_path (cfg, plugins_path, FALSE, NULL, NULL);
/* Init modules to get documentation strings */
i = 0;