]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add flags support to rspamc
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 16 Jul 2019 14:40:27 +0000 (15:40 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 16 Jul 2019 14:40:27 +0000 (15:40 +0100)
src/client/rspamc.c
src/libserver/protocol.c

index d08a7f620e155ea70284da35da9a26c91e7c1db0..5b3f874ef98c8ba75ebc3afa3dbe1d6ba796792f 100644 (file)
@@ -79,6 +79,10 @@ static gint retcode = EXIT_SUCCESS;
     g_queue_push_tail ((o), nh); \
 } while (0)
 
+#define ADD_CLIENT_FLAG(str, n) do { \
+   g_string_append ((str), (n)); \
+} while (0)
+
 static gboolean rspamc_password_callback (const gchar *option_name,
                const gchar *value,
                gpointer data,
@@ -553,6 +557,7 @@ add_options (GQueue *opts)
 {
        GString *numbuf;
        gchar **hdr, **rcpt;
+       GString *flagbuf = g_string_new (NULL);
 
        if (ip != NULL) {
                rspamd_inet_addr_t *addr = NULL;
@@ -634,7 +639,7 @@ add_options (GQueue *opts)
        }
 
        if (pass_all) {
-               ADD_CLIENT_HEADER (opts, "Pass", "all");
+               ADD_CLIENT_FLAG (flagbuf, "pass_all");
        }
 
        if (classifier) {
@@ -664,7 +669,7 @@ add_options (GQueue *opts)
        }
 
        if (profile) {
-               ADD_CLIENT_HEADER (opts, "Profile", "true");
+               ADD_CLIENT_FLAG (flagbuf, "profile");
        }
 
        if (skip_images) {
@@ -693,6 +698,19 @@ add_options (GQueue *opts)
 
                hdr ++;
        }
+
+       if (flagbuf->len > 0) {
+               goffset last = flagbuf->len - 1;
+
+               if (flagbuf->str[last] == ',') {
+                       flagbuf->str[last] = '\0';
+                       flagbuf->len --;
+               }
+
+               ADD_CLIENT_HEADER (opts, "Flags", flagbuf->str);
+       }
+
+       g_string_free (flagbuf, TRUE);
 }
 
 static void
index 602878d9bfd7a4dfbf6725191fb834028028c133..30ab766ceb70d708350a738e22101c1dd5aa940a 100644 (file)
@@ -365,6 +365,7 @@ rspamd_protocol_handle_flag (struct rspamd_task *task, const gchar *str,
        CHECK_TASK_FLAG("skip", RSPAMD_TASK_FLAG_NO_LOG);
        CHECK_TASK_FLAG("no_stat", RSPAMD_TASK_FLAG_NO_STAT);
        CHECK_TASK_FLAG("ssl", RSPAMD_TASK_FLAG_SSL);
+       CHECK_TASK_FLAG("profile", RSPAMD_TASK_FLAG_PROFILE);
 
        CHECK_PROTOCOL_FLAG("milter", RSPAMD_TASK_PROTOCOL_FLAG_MILTER);
        CHECK_PROTOCOL_FLAG("zstd", RSPAMD_TASK_PROTOCOL_FLAG_COMPRESSED);