}
if (RSPAMD_TASK_IS_PROCESSED (task)) {
- msg_info_session ("<%s> learned message as %s: %s",
- rspamd_inet_address_to_string (session->from_addr),
- session->is_spam ? "spam" : "ham",
- task->message_id);
- rspamd_controller_send_string (conn_ent, "{\"success\":true}");
+ if (task->err) {
+ rspamd_controller_send_error (conn_ent, task->err->code,
+ task->err->message);
+ }
+ else {
+ msg_info_session ("<%s> learned message as %s: %s",
+ rspamd_inet_address_to_string (session->from_addr),
+ session->is_spam ? "spam" : "ham",
+ task->message_id);
+ rspamd_controller_send_string (conn_ent, "{\"success\":true}");
+ }
+
return TRUE;
}
case RSPAMD_TASK_STAGE_POST_FILTERS:
rspamd_lua_call_post_filters (task);
- rspamd_stat_check_autolearn (task);
+ if (task->flags & RSPAMD_TASK_FLAG_LEARN_AUTO) {
+ rspamd_stat_check_autolearn (task);
+ }
break;
case RSPAMD_TASK_STAGE_LEARN:
worker->srv->stat->connections_count++;
task->resolver = ctx->resolver;
+ /* TODO: allow to disable autolearn in protocol */
+ task->flags |= RSPAMD_TASK_FLAG_LEARN_AUTO;
task->http_conn = rspamd_http_connection_new (
rspamd_worker_body_handler,