commit da9a407: [Minor] Warn about using of settings and settings-id together

Vsevolod Stakhov vsevolod at highsecure.ru
Fri Aug 16 12:28:03 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-08-16 13:22:47 +0100
URL: https://github.com/rspamd/rspamd/commit/da9a40771dc063e8773542a1c8d278f651d1b0fc (HEAD -> master)

[Minor] Warn about using of settings and settings-id together

---
 src/libserver/protocol.c          | 14 +++++++++++++-
 src/libserver/protocol_internal.h |  1 +
 src/plugins/lua/settings.lua      |  5 ++++-
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c
index 3f07926be..ef8700340 100644
--- a/src/libserver/protocol.c
+++ b/src/libserver/protocol.c
@@ -446,7 +446,7 @@ rspamd_protocol_handle_headers (struct rspamd_task *task,
 	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;
 
@@ -601,6 +601,10 @@ rspamd_protocol_handle_headers (struct rspamd_task *task,
 								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':
@@ -696,6 +700,14 @@ rspamd_protocol_handle_headers (struct rspamd_task *task,
 		}
 	}
 
+	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;
 	}
diff --git a/src/libserver/protocol_internal.h b/src/libserver/protocol_internal.h
index 8cec5d80e..a20ecbd6e 100644
--- a/src/libserver/protocol_internal.h
+++ b/src/libserver/protocol_internal.h
@@ -68,6 +68,7 @@ extern "C" {
 #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"
diff --git a/src/plugins/lua/settings.lua b/src/plugins/lua/settings.lua
index 94f7a6091..237ed41be 100644
--- a/src/plugins/lua/settings.lua
+++ b/src/plugins/lua/settings.lua
@@ -98,11 +98,15 @@ end
 -- 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)
 
@@ -113,7 +117,6 @@ local function check_query_settings(task)
   end
 
   local query_maxscore = task:get_request_header('maxscore')
-  local settings_id = task:get_settings_id()
   local nset
 
   if query_maxscore then


More information about the Commits mailing list