From: Vsevolod Stakhov Date: Tue, 16 Jul 2019 14:40:27 +0000 (+0100) Subject: [Minor] Add flags support to rspamc X-Git-Tag: 2.0~575 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8a9cf09b55619b7c46f1d6e3cc742cf10973bd60;p=rspamd.git [Minor] Add flags support to rspamc --- diff --git a/src/client/rspamc.c b/src/client/rspamc.c index d08a7f620..5b3f874ef 100644 --- a/src/client/rspamc.c +++ b/src/client/rspamc.c @@ -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 diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index 602878d9b..30ab766ce 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -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);