Browse Source

* Add once_received plugin (by dmx)

* Fix read_callback to avoid double freeing of task object
tags/0.3.0
Vsevolod Stakhov 14 years ago
parent
commit
876e5f1042
2 changed files with 20 additions and 6 deletions
  1. 15
    0
      src/plugins/lua/once_received.lua
  2. 5
    6
      src/worker.c

+ 15
- 0
src/plugins/lua/once_received.lua View File

@@ -0,0 +1,15 @@
-- 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 View File

@@ -174,7 +174,7 @@ read_socket (f_str_t * in, void *arg)
task->state = WRITE_ERROR;
}
if (task->state == WRITE_REPLY || task->state == WRITE_ERROR) {
write_socket (task);
return write_socket (task);
}
break;
case READ_MESSAGE:
@@ -188,20 +188,19 @@ read_socket (f_str_t * in, void *arg)
task->last_error = "MIME processing error";
task->error_code = RSPAMD_FILTER_ERROR;
task->state = WRITE_ERROR;
write_socket (task);
return write_socket (task);
}
if (task->cmd == CMD_OTHER) {
/* Skip filters */
task->state = WRITE_REPLY;
write_socket (task);
return TRUE;
return write_socket (task);
}
r = process_filters (task);
if (r == -1) {
task->last_error = "Filter processing error";
task->error_code = RSPAMD_FILTER_ERROR;
task->state = WRITE_ERROR;
write_socket (task);
return write_socket (task);
}
else if (r == 0) {
task->state = WAIT_FILTER;
@@ -209,7 +208,7 @@ read_socket (f_str_t * in, void *arg)
}
else {
process_statfiles (task);
write_socket (task);
return write_socket (task);
}
break;
default:

Loading…
Cancel
Save