]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Fix crash where inconsistent fuzzy query was sent
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 30 Oct 2019 12:44:11 +0000 (12:44 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 30 Oct 2019 12:44:11 +0000 (12:44 +0000)
src/plugins/fuzzy_check.c

index 3eed0da51487d1146c53a7c3c9d71ef7d69c1da2..58ba610fe80cfd7d62e0d45b2e0921103e9e6e62 100644 (file)
@@ -2960,7 +2960,8 @@ fuzzy_process_handler (struct rspamd_http_connection_entry *conn_ent,
        struct fuzzy_rule *rule;
        struct rspamd_controller_session *session = conn_ent->ud;
        struct rspamd_task *task, **ptask;
-       gboolean processed = FALSE, res = TRUE, skip = FALSE;
+       gboolean processed = FALSE, skip = FALSE;
+       gint res = 0;
        guint i;
        GError **err;
        GPtrArray *commands;
@@ -3118,19 +3119,24 @@ fuzzy_process_handler (struct rspamd_http_connection_entry *conn_ent,
                        }
                }
 
-
-               if (res) {
+               if (res > 0) {
                        processed = TRUE;
                }
        }
 
        if (res == -1) {
-               msg_warn_task ("cannot send fuzzy request: %s",
-                               strerror (errno));
-               rspamd_controller_send_error (conn_ent, 400, "Message sending error");
-               rspamd_task_free (task);
+               if (!processed) {
+                       msg_warn_task ("cannot send fuzzy request: %s",
+                                       strerror (errno));
+                       rspamd_controller_send_error (conn_ent, 400, "Message sending error");
+                       rspamd_task_free (task);
 
-               return;
+                       return;
+               }
+               else {
+                       /* Some rules failed and some rules are OK */
+                       msg_warn_task ("some rules are not processed, but we still sent this request");
+               }
        }
        else if (!processed) {
                if (rules) {