Fix weight calculation for spamd_address. Bug 2694
authorHeiko Schlichting <heiko@fu-berlin.de>
Fri, 19 Feb 2021 11:11:51 +0000 (11:11 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 19 Feb 2021 11:51:17 +0000 (11:51 +0000)
doc/doc-txt/ChangeLog
src/src/spam.c

index 5b900a558b217fcadd1ed77e253857db56d5af04..59fb46ad2900f861bcab27a7cf15d697ba3ab4b8 100644 (file)
@@ -203,7 +203,9 @@ JH/42 Bug 2693: Harden against a peer which reneges on a 452 "too many
       previous coding assumed this would not happen, and under PIPELINING
       would result in both lost and duplicate recipients for a message.
 
       previous coding assumed this would not happen, and under PIPELINING
       would result in both lost and duplicate recipients for a message.
 
-
+JH/43 Bug 2694: Fix weighted distribution of work to multiple spamd servers.
+      Previously the weighting was incorrectly applied.  Found and fixed by
+      Heiko Schlichting.
 
 
 Exim version 4.94
 
 
 Exim version 4.94
index 3318bff498d2df2463dc0ca24f62ed73fe674a42..b0e24b3682095d7f1009334553570dff6ca5d09e 100644 (file)
@@ -174,7 +174,7 @@ for (long rnd = random() % weights, i = 0; i < num_servers; i++)
   {
   sd = spamds[i];
   if (!sd->is_failed && sd->priority == pri)
   {
   sd = spamds[i];
   if (!sd->is_failed && sd->priority == pri)
-    if ((rnd -= sd->weight) <= 0)
+    if ((rnd -= sd->weight) < 0)
       return i;
   }
 
       return i;
   }