X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fspam.c;h=544fed17a40df4d7fec80eeb1e6c2470932f0337;hb=8f0d0a3138e138ffa6bcc94c8378f5eb22573f0e;hp=3318bff498d2df2463dc0ca24f62ed73fe674a42;hpb=532800c8bf0e4bc2c27739477e70e0d7eef7df21;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/spam.c b/src/src/spam.c index 3318bff49..544fed17a 100644 --- a/src/src/spam.c +++ b/src/src/spam.c @@ -35,7 +35,7 @@ spamd->is_failed = FALSE; spamd->weight = SPAMD_WEIGHT; spamd->timeout = SPAMD_TIMEOUT; spamd->retry = 0; -spamd->priority = 1; +spamd->priority = SPAMD_PRIORITY; return 0; } @@ -139,21 +139,11 @@ unsigned int i; spamd_address_container * sd; long weights; unsigned pri; -static BOOL srandomed = FALSE; /* speedup, if we have only 1 server */ if (num_servers == 1) return (spamds[0]->is_failed ? -1 : 0); -/* init ranmod */ -if (!srandomed) - { - struct timeval tv; - gettimeofday(&tv, NULL); - srandom((unsigned int)(tv.tv_usec/1000)); - srandomed = TRUE; - } - /* scan for highest pri */ for (pri = 0, i = 0; i < num_servers; i++) { @@ -170,11 +160,11 @@ for (weights = 0, i = 0; i < num_servers; i++) if (weights == 0) /* all servers failed */ return -1; -for (long rnd = random() % weights, i = 0; i < num_servers; i++) +for (long rnd = random_number(weights), i = 0; i < num_servers; i++) { sd = spamds[i]; if (!sd->is_failed && sd->priority == pri) - if ((rnd -= sd->weight) <= 0) + if ((rnd -= sd->weight) < 0) return i; }