Преглед на файлове

[Fix] Allow to reset settings id from Lua (e.g. because of the priority)

tags/2.4
Vsevolod Stakhov преди 4 години
родител
ревизия
cf7e2640c4
променени са 1 файла, в които са добавени 13 реда и са изтрити 15 реда
  1. 13
    15
      src/lua/lua_task.c

+ 13
- 15
src/lua/lua_task.c Целия файл

@@ -810,7 +810,7 @@ LUA_FUNCTION_DEF (task, set_settings);
* Set users settings id for a task (must be registered previously)
* @available 2.0+
* @param {number} id numeric id
* @return {boolean} true if settings id has been set
* @return {boolean} true if settings id has been replaced from the existing one
*/
LUA_FUNCTION_DEF (task, set_settings_id);

@@ -5591,25 +5591,23 @@ lua_task_set_settings_id (lua_State *L)

if (task != NULL && id != 0) {

struct rspamd_config_settings_elt *selt =
rspamd_config_find_settings_id_ref (task->cfg, id);

if (selt == NULL) {
return luaL_error (L, "settings id %u is unknown", id);
}
if (task->settings_elt) {
if (task->settings_elt->id != id) {
return luaL_error (L, "settings id has been already set to %d (%s); "
"trying to set it to %d",
task->settings_elt->id,
task->settings_elt->name,
id);
}
/* Overwrite existing settings from Lua */
REF_RELEASE (task->settings_elt);
lua_pushboolean (L, true);
}
else {
task->settings_elt = rspamd_config_find_settings_id_ref (task->cfg,
id);

if (!task->settings_elt) {
return luaL_error (L, "settings id %u is unknown", id);
}
lua_pushboolean (L, false);
}

lua_pushboolean (L, true);
task->settings_elt = selt;

}
else {
return luaL_error (L, "invalid arguments");

Loading…
Отказ
Запис