Переглянути джерело

* Add once_received plugin (by dmx)

* Fix read_callback to avoid double freeing of task object
tags/0.3.0
Vsevolod Stakhov 14 роки тому
джерело
коміт
876e5f1042
2 змінених файлів з 20 додано та 6 видалено
  1. 15
    0
      src/plugins/lua/once_received.lua
  2. 5
    6
      src/worker.c

+ 15
- 0
src/plugins/lua/once_received.lua Переглянути файл

-- 0 or 1 received: = spam

local metric = 'default'
local symbol = 'ONCE_RECEIVED'

function check_quantity_received (task)
local recvh = task:get_received_headers()
if table.maxn(recvh) <= 1 then
task:insert_result(metric, symbol, 1)
end
end

-- Register symbol's callback
local m = rspamd_config:get_metric(metric)
m:register_symbol(symbol, 1.0, 'check_quantity_received')

+ 5
- 6
src/worker.c Переглянути файл

task->state = WRITE_ERROR; task->state = WRITE_ERROR;
} }
if (task->state == WRITE_REPLY || task->state == WRITE_ERROR) { if (task->state == WRITE_REPLY || task->state == WRITE_ERROR) {
write_socket (task);
return write_socket (task);
} }
break; break;
case READ_MESSAGE: case READ_MESSAGE:
task->last_error = "MIME processing error"; task->last_error = "MIME processing error";
task->error_code = RSPAMD_FILTER_ERROR; task->error_code = RSPAMD_FILTER_ERROR;
task->state = WRITE_ERROR; task->state = WRITE_ERROR;
write_socket (task);
return write_socket (task);
} }
if (task->cmd == CMD_OTHER) { if (task->cmd == CMD_OTHER) {
/* Skip filters */ /* Skip filters */
task->state = WRITE_REPLY; task->state = WRITE_REPLY;
write_socket (task);
return TRUE;
return write_socket (task);
} }
r = process_filters (task); r = process_filters (task);
if (r == -1) { if (r == -1) {
task->last_error = "Filter processing error"; task->last_error = "Filter processing error";
task->error_code = RSPAMD_FILTER_ERROR; task->error_code = RSPAMD_FILTER_ERROR;
task->state = WRITE_ERROR; task->state = WRITE_ERROR;
write_socket (task);
return write_socket (task);
} }
else if (r == 0) { else if (r == 0) {
task->state = WAIT_FILTER; task->state = WAIT_FILTER;
} }
else { else {
process_statfiles (task); process_statfiles (task);
write_socket (task);
return write_socket (task);
} }
break; break;
default: default:

Завантаження…
Відмінити
Зберегти