struct rspamd_http_message *msg)
{
rspamd_ftok_t *hn_tok, *hv_tok, srch;
- gboolean has_ip = FALSE;
+ gboolean has_ip = FALSE, seen_settings_header = FALSE;
struct rspamd_http_header *header, *h, *htmp;
gchar *ntok;
task->settings_elt->id);
}
}
+ IF_HEADER (SETTINGS_HEADER) {
+ msg_debug_protocol ("read settings header, value: %T", hv_tok);
+ seen_settings_header = TRUE;
+ }
break;
case 'u':
case 'U':
}
}
+ if (seen_settings_header && task->settings_elt) {
+ msg_warn_task ("ignore settings id %s as settings header is also presented",
+ task->settings_elt->name);
+ REF_RELEASE (task->settings_elt);
+
+ task->settings_elt = NULL;
+ }
+
if (!has_ip) {
task->flags |= RSPAMD_TASK_FLAG_NO_IP;
}
#define RCPT_HEADER "Rcpt"
#define SUBJECT_HEADER "Subject"
#define SETTINGS_ID_HEADER "Settings-ID"
+#define SETTINGS_HEADER "Settings"
#define QUEUE_ID_HEADER "Queue-ID"
#define USER_HEADER "User"
#define URLS_HEADER "URL-Format"
-- settings are overridden
local function check_query_settings(task)
-- Try 'settings' attribute
+ local settings_id = task:get_settings_id()
local query_set = task:get_request_header('settings')
if query_set then
+
local parser = ucl.parser()
local res,err = parser:parse_string(tostring(query_set))
if res then
+ rspamd_logger.warnx(task, "both settings-id '%s' and settings headers are presented, ignore settings-id; ",
+ tostring(settings_id))
local settings_obj = parser:get_object()
apply_settings(task, settings_obj, nil)
end
local query_maxscore = task:get_request_header('maxscore')
- local settings_id = task:get_settings_id()
local nset
if query_maxscore then