]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Disable results caching
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 22 Mar 2018 10:26:53 +0000 (10:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 22 Mar 2018 10:26:53 +0000 (10:26 +0000)
src/libserver/mempool_vars_internal.h
src/libserver/protocol.c
src/rspamd_proxy.c

index 903f169f9c1e9fa1b1436fb7619f6bc41ca361cb..2f850a8adc9e1ed2668de15921e9bf4f8f4a01d7 100644 (file)
@@ -24,7 +24,6 @@
 #define RSPAMD_MEMPOOL_SETTINGS_HASH "settings_hash"
 #define RSPAMD_MEMPOOL_MTA_TAG "MTA-Tag"
 #define RSPAMD_MEMPOOL_MTA_NAME "MTA-Name"
-#define RSPAMD_MEMPOOL_CACHED_REPLY "cached_reply"
 #define RSPAMD_MEMPOOL_SPF_DOMAIN "spf_domain"
 #define RSPAMD_MEMPOOL_PRINCIPAL_RECIPIENT "principal_recipient"
 #define RSPAMD_MEMPOOL_PROFILE "profile"
index 103ad85882c359dd7501506c6f31aa20a4b265a3..752b4a6743ab73107dc9ca581814f4bfcdf8c3cc 100644 (file)
@@ -1048,20 +1048,6 @@ rspamd_protocol_output_profiling (struct rspamd_task *task,
        ucl_object_insert_key (top, prof, "profile", 0, false);
 }
 
-struct rspamd_saved_protocol_reply {
-       ucl_object_t *obj;
-       guint metric_changes;
-       enum rspamd_protocol_flags flags;
-};
-
-static void
-rspamd_protocol_cached_dtor (gpointer p)
-{
-       struct rspamd_saved_protocol_reply *cached = p;
-
-       ucl_object_unref (cached->obj);
-}
-
 ucl_object_t *
 rspamd_protocol_write_ucl (struct rspamd_task *task,
                enum rspamd_protocol_flags flags)
@@ -1069,66 +1055,9 @@ rspamd_protocol_write_ucl (struct rspamd_task *task,
        ucl_object_t *top = NULL;
        GString *dkim_sig;
        const ucl_object_t *milter_reply;
-       struct rspamd_saved_protocol_reply *cached;
-       static const gchar *varname = RSPAMD_MEMPOOL_CACHED_REPLY;
 
        /* Check for cached reply */
-       cached = rspamd_mempool_get_variable (task->task_pool, varname);
-
-       if (cached) {
-               top = cached->obj;
-               /*
-                * Update flags: we don't need to set more flags than we need,
-                * so just xor previous flags and current flags and then or them
-                * to the cached one
-                */
-               flags ^= cached->flags;
-               cached->flags |= flags;
-
-               if (task->result &&
-                               cached->metric_changes != task->result->changes) {
-                       msg_info_task ("found metric modifications (%d) before we have "
-                                       "generated protocol results (%d), regenerate them",
-                                       task->result->changes, cached->metric_changes);
-
-                       flags |= RSPAMD_PROTOCOL_METRICS;
-
-                       if (task->cmd == CMD_CHECK_V2) {
-                               ucl_object_delete_key (top, "symbols");
-                       }
-                       else {
-                               ucl_object_delete_key (top, DEFAULT_METRIC);
-                       }
-
-                       /* That all is related to metric unfortunately */
-                       ucl_object_delete_key (top, "is_spam");
-                       ucl_object_delete_key (top, "is_skipped");
-                       ucl_object_delete_key (top, "score");
-                       ucl_object_delete_key (top, "required_score");
-                       ucl_object_delete_key (top, "action");
-                       ucl_object_delete_key (top, "subject");
-               }
-               if (task->result) {
-                       cached->metric_changes = task->result->changes;
-               }
-       }
-       else {
-               top = ucl_object_typed_new (UCL_OBJECT);
-               cached = rspamd_mempool_alloc (task->task_pool, sizeof (*cached));
-               cached->obj = top;
-               cached->flags = flags;
-
-               if (task->result) {
-                       cached->metric_changes = task->result->changes;
-               }
-
-               rspamd_mempool_set_variable (task->task_pool, varname,
-                               cached, rspamd_protocol_cached_dtor);
-
-               /* We also set scan time here */
-               task->time_real_finish = rspamd_get_ticks (FALSE);
-               task->time_virtual_finish = rspamd_get_virtual_ticks ();
-       }
+       top = ucl_object_typed_new (UCL_OBJECT);
 
        if (flags & RSPAMD_PROTOCOL_METRICS) {
                rspamd_metric_result_ucl (task, task->result, top);
@@ -1213,8 +1142,8 @@ rspamd_protocol_write_ucl (struct rspamd_task *task,
                         * space (ASCII 0x20) or tab (ASCII 0x09, or \t in C).
                         * The line feed should NOT be preceded by a carriage return (ASCII 0x0d);
                         * the MTA will add this automatically.
-                        * It is the filter writer's responsibility to ensure that no s
-                        * tandards are violated.
+                        * It is the filter writer's responsibility to ensure that no
+                        * standards are violated.
                         */
                        ucl_object_insert_key (top,
                                        ucl_object_fromstring_common (folded_header->str,
@@ -1678,6 +1607,8 @@ rspamd_protocol_write_reply (struct rspamd_task *task)
                case CMD_PROCESS:
                case CMD_SKIP:
                case CMD_CHECK_V2:
+                       task->time_real_finish = rspamd_get_ticks (FALSE);
+                       task->time_virtual_finish = rspamd_get_virtual_ticks ();
                        rspamd_protocol_http_reply (msg, task, NULL);
                        rspamd_protocol_write_log_pipe (task);
                        break;
index e3127f621181b2eb2aa7133a5d2e2681403a6c1c..d19f769a1be9515da2fdc3fe21ad94f278915e6b 100644 (file)
@@ -1598,6 +1598,8 @@ rspamd_proxy_scan_self_reply (struct rspamd_task *task)
        case CMD_PROCESS:
        case CMD_SKIP:
        case CMD_CHECK_V2:
+               task->time_real_finish = rspamd_get_ticks (FALSE);
+               task->time_virtual_finish = rspamd_get_virtual_ticks ();
                rspamd_protocol_http_reply (msg, task, &rep);
                rspamd_protocol_write_log_pipe (task);
                break;