summaryrefslogtreecommitdiff
path: root/mail-filter/rspamd/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-03-13 16:55:35 +0000
committerV3n3RiX <venerix@redcorelinux.org>2018-03-13 16:55:35 +0000
commit1dde4e5c4b92d849bf1abf0a48135b2a0644f7e1 (patch)
treec99a472cce74148d499f42ada873454b0e32a42d /mail-filter/rspamd/files
parentda6a52f691ef980bab92d003d5df8f463c623af8 (diff)
gentoo resync : 13.03.2018
Diffstat (limited to 'mail-filter/rspamd/files')
-rw-r--r--mail-filter/rspamd/files/1.6.6-dont-send-reject-message-after-set-reply.patch128
1 files changed, 128 insertions, 0 deletions
diff --git a/mail-filter/rspamd/files/1.6.6-dont-send-reject-message-after-set-reply.patch b/mail-filter/rspamd/files/1.6.6-dont-send-reject-message-after-set-reply.patch
new file mode 100644
index 000000000000..4238c838dfa9
--- /dev/null
+++ b/mail-filter/rspamd/files/1.6.6-dont-send-reject-message-after-set-reply.patch
@@ -0,0 +1,128 @@
+From 2bda2989eee893c42ff04f48a904f00a33a7d07a Mon Sep 17 00:00:00 2001
+From: Vsevolod Stakhov <vsevolod@highsecure.ru>
+Date: Tue, 27 Feb 2018 16:37:44 +0000
+Subject: [PATCH] [CritFix] Do not send reject messages after set reply
+
+Libmilter seems to be totally brain damaged:
+https://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/contrib/sendmail/libmilter/engine.c#L66
+
+---
+ src/libserver/milter.c | 22 ++++++++++++++++++----
+ 1 file changed, 18 insertions(+), 4 deletions(-)
+
+ Back-ported for rspamd 1.5.6
+
+diff -ur rspamd-1.6.6/src/libserver/milter.c rspamd-1.6.6-badmilter/src/libserver/milter.c
+--- rspamd-1.6.6/src/libserver/milter.c 2018-02-16 13:47:47.000000000 +0000
++++ rspamd-1.6.6-badmilter/src/libserver/milter.c 2018-03-07 16:07:58.591483869 +0000
+@@ -99,6 +99,8 @@
+ guint i;
+
+ if (how & RSPAMD_MILTER_RESET_IO) {
++ msg_debug_milter ("cleanup IO on abort");
++
+ DL_FOREACH_SAFE (priv->out_chain, obuf, obuf_tmp) {
+ rspamd_milter_obuf_free (obuf);
+ }
+@@ -111,8 +113,11 @@
+ }
+
+ if (how & RSPAMD_MILTER_RESET_COMMON) {
++ msg_debug_milter ("cleanup common data on abort");
++
+ if (session->message) {
+ session->message->len = 0;
++ msg_debug_milter ("cleanup message on abort");
+ }
+
+ if (session->rcpts) {
+@@ -120,30 +125,38 @@
+ rspamd_email_address_unref (cur);
+ }
+
++ msg_debug_milter ("cleanup %d recipients on abort",
++ (gint)session->rcpts->len);
++
+ g_ptr_array_free (session->rcpts, TRUE);
+ session->rcpts = NULL;
+ }
+
+ if (session->from) {
++ msg_debug_milter ("cleanup from");
+ rspamd_email_address_unref (session->from);
+ session->from = NULL;
+ }
+
+ if (session->helo) {
++ msg_debug_milter ("cleanup helo");
+ session->helo->len = 0;
+ }
+
+ if (session->hostname) {
++ msg_debug_milter ("cleanup hostname");
+ session->hostname->len = 0;
+ }
+
+ if (priv->headers) {
++ msg_debug_milter ("cleanup headers");
+ g_hash_table_remove_all (priv->headers);
+ }
+ }
+
+ if (how & RSPAMD_MILTER_RESET_ADDR) {
+ if (session->addr) {
++ msg_debug_milter ("cleanup addr");
+ rspamd_inet_address_free (session->addr);
+ session->addr = NULL;
+ }
+@@ -151,6 +164,7 @@
+
+ if (how & RSPAMD_MILTER_RESET_MACRO) {
+ if (session->macros) {
++ msg_debug_milter ("cleanup macros");
+ g_hash_table_unref (session->macros);
+ session->macros = NULL;
+ }
+@@ -1612,7 +1626,7 @@
+ msg_err_milter ("cannot find scan results, tempfail");
+ rspamd_milter_send_action (session, RSPAMD_MILTER_TEMPFAIL);
+
+- return;
++ goto cleanup;
+ }
+
+ elt = ucl_object_lookup (results, "action");
+@@ -1621,7 +1635,7 @@
+ msg_err_milter ("cannot find action in results, tempfail");
+ rspamd_milter_send_action (session, RSPAMD_MILTER_TEMPFAIL);
+
+- return;
++ goto cleanup;
+ }
+
+ rspamd_action_from_str (ucl_object_tostring (elt), &action);
+@@ -1681,7 +1695,6 @@
+ }
+
+ rspamd_milter_set_reply (session, rcode, xcode, reply);
+- rspamd_milter_send_action (session, RSPAMD_MILTER_REJECT);
+ }
+ break;
+ case METRIC_ACTION_SOFT_REJECT:
+@@ -1696,7 +1709,6 @@
+ }
+
+ rspamd_milter_set_reply (session, rcode, xcode, reply);
+- rspamd_milter_send_action (session, RSPAMD_MILTER_REJECT);
+ break;
+
+ case METRIC_ACTION_REWRITE_SUBJECT:
+@@ -1741,6 +1753,8 @@
+ rspamd_fstring_free (rcode);
+ rspamd_fstring_free (xcode);
+ rspamd_fstring_free (reply);
++
++ rspamd_milter_session_reset (session, RSPAMD_MILTER_RESET_ABORT);
+ }
+
+ void