Author: arekm                        Date: Thu Jan  6 13:14:15 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- up to 4.73; add better spamd loadbalance patch; drop noloadbalance patch

---- Files affected:
packages/exim:
   exim.spec (1.321 -> 1.322) , exim-bug-1056.patch (NONE -> 1.1)  (NEW), 
exim-noloadbalance.patch (1.1 -> NONE)  (REMOVED)

---- Diffs:

================================================================
Index: packages/exim/exim.spec
diff -u packages/exim/exim.spec:1.321 packages/exim/exim.spec:1.322
--- packages/exim/exim.spec:1.321       Thu Dec 16 15:30:01 2010
+++ packages/exim/exim.spec     Thu Jan  6 14:14:09 2011
@@ -14,15 +14,15 @@
 Summary(pl.UTF-8):     Agent Transferu Poczty Uniwersytetu w Cambridge
 Summary(pt_BR.UTF-8):  Servidor de correio eletrĂ´nico exim
 Name:          exim
-Version:       4.72
-Release:       5
+Version:       4.73
+Release:       1
 Epoch:         2
 License:       GPL
 Group:         Networking/Daemons/SMTP
 Source0:       ftp://ftp.exim.org/pub/exim/exim4/%{name}-%{version}.tar.bz2
-# Source0-md5: ccc937b533568e5e8340f181a3b3d2ff
+# Source0-md5: b32fb85c5161ad2fabfe9ba860a1ad2c
 Source1:       
ftp://ftp.exim.org/pub/exim/exim4/%{name}-html-%{version}.tar.bz2
-# Source1-md5: 8b39be84de74b94bd4b5c3e7aad3fcdf
+# Source1-md5: 2122481f3248a7c102024a5c22cd5c72
 Source2:       %{name}.init
 Source3:       %{name}.cron.db
 Source4:       %{name}4.conf
@@ -47,7 +47,7 @@
 Patch4:                %{name}4-Makefile-Default.patch
 # 
http://marc.merlins.org/linux/exim/files/sa-exim-cvs/localscan_dlopen_exim_4.20_or_better.patch
 Patch5:                localscan_dlopen_%{name}_4.20_or_better.patch
-Patch6:                %{name}-noloadbalance.patch
+Patch6:                %{name}-bug-1056.patch
 # http://sourceforge.net/projects/eximdsn/
 Patch7:                %{name}_463_dsn_1_3.patch
 Patch8:                %{name}-spam-timeout.patch
@@ -321,6 +321,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.322  2011/01/06 13:14:09  arekm
+- up to 4.73; add better spamd loadbalance patch; drop noloadbalance patch
+
 Revision 1.321  2010/12/16 14:30:01  zagrodzki
 add config.h to the list of installed header files.
 

================================================================
Index: packages/exim/exim-bug-1056.patch
diff -u /dev/null packages/exim/exim-bug-1056.patch:1.1
--- /dev/null   Thu Jan  6 14:14:15 2011
+++ packages/exim/exim-bug-1056.patch   Thu Jan  6 14:14:09 2011
@@ -0,0 +1,68 @@
+diff -urN exim-4.71/src/spam.c exim-4.71-new/src/spam.c
+--- exim-4.71/src/spam.c       2008-07-18 18:55:42.000000000 +0100
++++ exim-4.71-new/src/spam.c   2009-12-17 12:37:14.000000000 +0000
+@@ -104,10 +104,8 @@
+ 
+   /* socket does not start with '/' -> network socket */
+   if (*spamd_address_work != '/') {
+-    time_t now = time(NULL);
+     int num_servers = 0;
+-    int current_server = 0;
+-    int start_server = 0;
++    int current_server;
+     uschar *address = NULL;
+     uschar *spamd_address_list_ptr = spamd_address_work;
+     uschar address_buffer[256];
+@@ -119,6 +117,7 @@
+                                         address_buffer,
+                                         sizeof(address_buffer))) != NULL) {
+ 
++      /* Potential memory leak as we never free the store. */
+       spamd_address_container *this_spamd =
+         (spamd_address_container *)store_get(sizeof(spamd_address_container));
+ 
+@@ -143,9 +142,10 @@
+       return DEFER;
+     };
+ 
+-    current_server = start_server = (int)now % num_servers;
++    while ( num_servers > 0 ) {
+ 
+-    while (1) {
++      /* Randomly pick a server to try */
++      current_server = random_number( num_servers );
+ 
+       debug_printf("trying server %s, port %u\n",
+                    spamd_address_vector[current_server]->tcp_addr,
+@@ -173,16 +173,21 @@
+          spamd_address_vector[current_server]->tcp_addr,
+          spamd_address_vector[current_server]->tcp_port,
+          strerror(errno));
+-      current_server++;
+-      if (current_server >= num_servers)
+-        current_server = 0;
+-      if (current_server == start_server) {
+-        log_write(0, LOG_MAIN|LOG_PANIC, "spam acl condition: all spamd 
servers failed");
+-        (void)fclose(mbox_file);
+-        (void)close(spamd_sock);
+-        return DEFER;
+-      };
+-    };
++
++      (void)close(spamd_sock);
++
++      /* Remove the server from the list. XXX We should free the memory */
++      num_servers--;
++      int i;
++      for( i = current_server; i < num_servers; i++ )
++        spamd_address_vector[i] = spamd_address_vector[i+1];
++    }
++
++    if ( num_servers == 0 ) {
++      log_write(0, LOG_MAIN|LOG_PANIC, "spam acl condition: all spamd servers 
failed");
++      (void)fclose(mbox_file);
++      return DEFER;
++    }
+ 
+   }
+   else {
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/exim/exim.spec?r1=1.321&r2=1.322&f=u

_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to