[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewSt…

Kezdőlap
Üzenet törlése
Válasz az üzenetre
Szerző: Philip Hazel
Dátum:  
Címzett: exim-cvs
Tárgy: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff OptionLists.txt exim/exim-src ACKNOWLEDGMENTS README.UPDATING exim/exim-src/exim_monitor em_globals.c exim/exim-src/src acl.c config.
ph10 2005/12/12 15:58:53 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff OptionLists.txt 
    exim-src             ACKNOWLEDGMENTS README.UPDATING 
    exim-src/exim_monitor em_globals.c 
    exim-src/src         acl.c config.h.defaults expand.c 
                         globals.c globals.h macros.h smtp_in.c 
                         spool_in.c spool_out.c 
  Log:
  Go to 20 ACL variables of each type, and make the numbers changeable at
  compile time.


  Revision  Changes    Path
  1.274     +6 -0      exim/exim-doc/doc-txt/ChangeLog
  1.80      +8 -0      exim/exim-doc/doc-txt/NewStuff
  1.14      +2 -0      exim/exim-doc/doc-txt/OptionLists.txt
  1.39      +2 -1      exim/exim-src/ACKNOWLEDGMENTS
  1.10      +10 -0     exim/exim-src/README.UPDATING
  1.8       +1 -1      exim/exim-src/exim_monitor/em_globals.c
  1.53      +26 -10    exim/exim-src/src/acl.c
  1.8       +3 -0      exim/exim-src/src/config.h.defaults
  1.51      +28 -21    exim/exim-src/src/expand.c
  1.44      +1 -1      exim/exim-src/src/globals.c
  1.32      +1 -1      exim/exim-src/src/globals.h
  1.21      +0 -5      exim/exim-src/src/macros.h
  1.27      +4 -2      exim/exim-src/src/smtp_in.c
  1.14      +37 -5     exim/exim-src/src/spool_in.c
  1.9       +9 -2      exim/exim-src/src/spool_out.c


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.273
  retrieving revision 1.274
  diff -u -r1.273 -r1.274
  --- ChangeLog    12 Dec 2005 11:41:50 -0000    1.273
  +++ ChangeLog    12 Dec 2005 15:58:53 -0000    1.274
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.273 2005/12/12 11:41:50 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.274 2005/12/12 15:58:53 ph10 Exp $


Change log file for Exim from version 4.21
-------------------------------------------
@@ -28,6 +28,12 @@

   PH/05 If group was specified without a user on a router, and no group or user
         was specified on a transport, the group from the router was ignored.
  +
  +PH/06 Increased the number of ACL variables to 20 of each type, and arranged
  +      for visible compile-time settings that can be used to change these
  +      numbers, for those that want even more. Backwards compatibility with old
  +      spool files has been maintained. However, going back to a previous Exim
  +      release will lost any variables that are in spool files.



Exim version 4.60

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- NewStuff    12 Dec 2005 11:02:44 -0000    1.79
  +++ NewStuff    12 Dec 2005 15:58:53 -0000    1.80
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.79 2005/12/12 11:02:44 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.80 2005/12/12 15:58:53 ph10 Exp $


   New Features in Exim
   --------------------
  @@ -19,6 +19,14 @@
         IPv6 addresses that are listed in local_interfaces, manualroute route
         data, etc. are also ignored. If IP literals are enabled, the ipliteral
         router declines to handle IPv6 literal addresses.
  +
  +PH/01 There are now 20 of each type of ACL variable by default (instead of 10).
  +      It is also possible to change the numbers by setting ACL_CVARS and/or
  +      ACL_MVARS in Local/Makefile. Backward compatibility is maintained if you
  +      upgrade to this release with existing messages containing ACL variable
  +      settings on the queue. However, going in the other direction
  +      (downgrading) will not be compatible; the values of ACL variables will be
  +      lost.



Version 4.60

  Index: OptionLists.txt
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/OptionLists.txt,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- OptionLists.txt    6 Dec 2005 10:25:59 -0000    1.13
  +++ OptionLists.txt    12 Dec 2005 15:58:53 -0000    1.14
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.13 2005/12/06 10:25:59 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.14 2005/12/12 15:58:53 ph10 Exp $


   LISTS OF EXIM OPTIONS
   ---------------------
  @@ -735,6 +735,8 @@
   Option                       Type         Description
   ------------------------------------------------------------------------------


  +ACL_CVARS=20                 optional*    number of acl_c variables
  +ACL_MVARS=20                 optional*    number of acl_m variables
   ALT_CONFIG_PREFIX            optional     restricts location of -C files
   ALT_CONFIG_ROOT_ONLY         optional*    privileged -C needs root (not exim)
   APPENDFILE_MODE              optional*


  Index: ACKNOWLEDGMENTS
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- ACKNOWLEDGMENTS    15 Nov 2005 10:08:25 -0000    1.38
  +++ ACKNOWLEDGMENTS    12 Dec 2005 15:58:53 -0000    1.39
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.38 2005/11/15 10:08:25 ph10 Exp $
  +$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.39 2005/12/12 15:58:53 ph10 Exp $


EXIM ACKNOWLEDGEMENTS

@@ -20,7 +20,7 @@
Philip Hazel

Lists created: 20 November 2002
-Last updated: 15 November 2005
+Last updated: 12 December 2005


   THE OLD LIST
  @@ -210,6 +210,7 @@
                             Patch for MySQL non-data queries
   David Saez                Suggested patch for $sender_hostname lookup if needed
                             Support for the clamd virus scanner
  +                          Suggested patch for increased number of ACL variables
   Jonathan Sambrook         Suggested patch for expanding uid and gid lists
   Peter Savitch             Diagnosis of FPE bug when statvfs() fails on spool
   Harald Schueler           Patch for dn_expand() failure on truncated data


  Index: README.UPDATING
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/README.UPDATING,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- README.UPDATING    3 Oct 2005 13:25:32 -0000    1.9
  +++ README.UPDATING    12 Dec 2005 15:58:53 -0000    1.10
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/README.UPDATING,v 1.9 2005/10/03 13:25:32 ph10 Exp $
  +$Cambridge: exim/exim-src/README.UPDATING,v 1.10 2005/12/12 15:58:53 ph10 Exp $


This document contains detailed information about incompatibilities that might
be encountered when upgrading from one release of Exim to another. The
@@ -26,6 +26,16 @@

The rest of this document contains information about changes in 4.xx releases
that might affect a running system.
+
+
+Exim version 4.61
+-----------------
+
+The default number of ACL variables of each type has been increased to 20, and
+it's possible to compile Exim with more. You can safely upgrade to this release
+if you already have messages on the queue with saved ACL variable values.
+However, if you downgrade from this release with messages on the queue, any
+saved ACL values they may have will be lost.


Exim version 4.54

  Index: em_globals.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/exim_monitor/em_globals.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- em_globals.c    23 May 2005 15:28:38 -0000    1.7
  +++ em_globals.c    12 Dec 2005 15:58:53 -0000    1.8
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/exim_monitor/em_globals.c,v 1.7 2005/05/23 15:28:38 fanf2 Exp $ */
  +/* $Cambridge: exim/exim-src/exim_monitor/em_globals.c,v 1.8 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *                Exim Monitor                    *
  @@ -118,7 +118,7 @@
   #endif



-uschar *acl_var[ACL_C_MAX+ACL_M_MAX];
+uschar *acl_var[ACL_CVARS + ACL_MVARS];

   uschar *active_hostname        = NULL;
   BOOL    allow_unqualified_recipient = FALSE;


  Index: acl.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/acl.c,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- acl.c    6 Dec 2005 10:25:59 -0000    1.52
  +++ acl.c    12 Dec 2005 15:58:53 -0000    1.53
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/acl.c,v 1.52 2005/12/06 10:25:59 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/acl.c,v 1.53 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -752,17 +752,33 @@


     if (c == ACLC_SET)
       {
  -    if (Ustrncmp(s, "acl_", 4) != 0 || (s[4] != 'c' && s[4] != 'm') ||
  -        !isdigit(s[5]) || (!isspace(s[6]) && s[6] != '='))
  +    int offset, max, n;
  +    uschar *endptr;
  +
  +    if (Ustrncmp(s, "acl_", 4) != 0) goto BAD_ACL_VAR;
  +    if (s[4] == 'c')
  +      {
  +      offset = 0;
  +      max = ACL_CVARS;
  +      }
  +    else if (s[4] == 'm')
  +      {
  +      offset = ACL_CVARS;
  +      max = ACL_MVARS;
  +      }
  +    else goto BAD_ACL_VAR;
  +
  +    n = Ustrtoul(s + 5, &endptr, 10);
  +    if ((*endptr != 0 && *endptr != '=' && !isspace(*endptr)) || n >= max)
         {
  -      *error = string_sprintf("unrecognized name after \"set\" in ACL "
  -        "modifier \"set %s\"", s);
  +      BAD_ACL_VAR:
  +      *error = string_sprintf("syntax error or unrecognized name after "
  +        "\"set\" in ACL modifier \"set %s\"", s);
         return NULL;
         }


  -    cond->u.varnumber = s[5] - '0';
  -    if (s[4] == 'm') cond->u.varnumber += ACL_C_MAX;
  -    s += 6;
  +    cond->u.varnumber = n + offset;
  +    s = endptr;
       while (isspace(*s)) s++;
       }


  @@ -2329,8 +2345,8 @@
       if (cb->type == ACLC_SET)
         {
         int n = cb->u.varnumber;
  -      int t = (n < ACL_C_MAX)? 'c' : 'm';
  -      if (n >= ACL_C_MAX) n -= ACL_C_MAX;
  +      int t = (n < ACL_CVARS)? 'c' : 'm';
  +      if (n >= ACL_CVARS) n -= ACL_CVARS;
         debug_printf("acl_%c%d ", t, n);
         lhswidth += 7;
         }
  @@ -2802,7 +2818,7 @@
       case ACLC_SET:
         {
         int old_pool = store_pool;
  -      if (cb->u.varnumber < ACL_C_MAX) store_pool = POOL_PERM;
  +      if (cb->u.varnumber < ACL_CVARS) store_pool = POOL_PERM;
         acl_var[cb->u.varnumber] = string_copy(arg);
         store_pool = old_pool;
         }


  Index: config.h.defaults
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/config.h.defaults,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- config.h.defaults    1 Aug 2005 13:20:28 -0000    1.7
  +++ config.h.defaults    12 Dec 2005 15:58:53 -0000    1.8
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/config.h.defaults,v 1.7 2005/08/01 13:20:28 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/config.h.defaults,v 1.8 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -10,6 +10,9 @@
   /* The default settings for Exim configuration variables. A #define without
   any data just defines the existence of the variable; it won't get included
   in config.h unless some value is defined in Local/Makefile. */
  +
  +#define ACL_CVARS                    20
  +#define ACL_MVARS                    20


#define ALT_CONFIG_PREFIX
#define ALT_CONFIG_ROOT_ONLY

  Index: expand.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/expand.c,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- expand.c    12 Dec 2005 12:05:08 -0000    1.50
  +++ expand.c    12 Dec 2005 15:58:53 -0000    1.51
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/expand.c,v 1.50 2005/12/12 12:05:08 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/expand.c,v 1.51 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -298,26 +298,6 @@
   /* This table must be kept in alphabetical order. */


   static var_entry var_table[] = {
  -  { "acl_c0",              vtype_stringptr,   &acl_var[0] },
  -  { "acl_c1",              vtype_stringptr,   &acl_var[1] },
  -  { "acl_c2",              vtype_stringptr,   &acl_var[2] },
  -  { "acl_c3",              vtype_stringptr,   &acl_var[3] },
  -  { "acl_c4",              vtype_stringptr,   &acl_var[4] },
  -  { "acl_c5",              vtype_stringptr,   &acl_var[5] },
  -  { "acl_c6",              vtype_stringptr,   &acl_var[6] },
  -  { "acl_c7",              vtype_stringptr,   &acl_var[7] },
  -  { "acl_c8",              vtype_stringptr,   &acl_var[8] },
  -  { "acl_c9",              vtype_stringptr,   &acl_var[9] },
  -  { "acl_m0",              vtype_stringptr,   &acl_var[10] },
  -  { "acl_m1",              vtype_stringptr,   &acl_var[11] },
  -  { "acl_m2",              vtype_stringptr,   &acl_var[12] },
  -  { "acl_m3",              vtype_stringptr,   &acl_var[13] },
  -  { "acl_m4",              vtype_stringptr,   &acl_var[14] },
  -  { "acl_m5",              vtype_stringptr,   &acl_var[15] },
  -  { "acl_m6",              vtype_stringptr,   &acl_var[16] },
  -  { "acl_m7",              vtype_stringptr,   &acl_var[17] },
  -  { "acl_m8",              vtype_stringptr,   &acl_var[18] },
  -  { "acl_m9",              vtype_stringptr,   &acl_var[19] },
     { "acl_verify_message",  vtype_stringptr,   &acl_verify_message },
     { "address_data",        vtype_stringptr,   &deliver_address_data },
     { "address_file",        vtype_stringptr,   &address_file },
  @@ -1249,6 +1229,33 @@
   int first = 0;
   int last = var_table_size;


  +/* Handle ACL variables, which are not in the table because their number may
  +vary depending on a build-time setting. */
  +
  +if (Ustrncmp(name, "acl_", 4) == 0)
  +  {
  +  int offset, max, n;
  +  uschar *endptr;
  +
  +  if (name[4] == 'm')
  +    {
  +    offset = ACL_CVARS;
  +    max = ACL_MVARS;
  +    }
  +  else if (name[4] == 'c')
  +    {
  +    offset = 0;
  +    max = ACL_CVARS;
  +    }
  +  else return NULL;
  +
  +  n = Ustrtoul(name + 5, &endptr, 10);
  +  if (*endptr != 0 || n >= max) return NULL;
  +  return (acl_var[offset + n] == NULL)? US"" : acl_var[offset + n];
  +  }
  +
  +/* For all other variables, search the table */
  +
   while (last > first)
     {
     uschar *s, *domain;
  @@ -1260,7 +1267,7 @@
     if (c < 0) { last = middle; continue; }


     /* Found an existing variable. If in skipping state, the value isn't needed,
  -  and we want to avoid processing (such as looking up up the host name). */
  +  and we want to avoid processing (such as looking up the host name). */


     if (skipping) return US"";



  Index: globals.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/globals.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- globals.c    6 Dec 2005 10:25:59 -0000    1.43
  +++ globals.c    12 Dec 2005 15:58:53 -0000    1.44
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/globals.c,v 1.43 2005/12/06 10:25:59 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/globals.c,v 1.44 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -184,7 +184,7 @@
   uschar *acl_smtp_starttls      = NULL;
   uschar *acl_smtp_vrfy          = NULL;
   BOOL    acl_temp_details       = FALSE;
  -uschar *acl_var[ACL_C_MAX+ACL_M_MAX];
  +uschar *acl_var[ACL_CVARS + ACL_MVARS];
   uschar *acl_verify_message     = NULL;
   header_line *acl_warn_headers  = NULL;
   string_item *acl_warn_logged   = NULL;


  Index: globals.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/globals.h,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- globals.h    6 Dec 2005 10:25:59 -0000    1.31
  +++ globals.h    12 Dec 2005 15:58:53 -0000    1.32
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/globals.h,v 1.31 2005/12/06 10:25:59 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/globals.h,v 1.32 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -126,7 +126,7 @@
   extern uschar *acl_smtp_starttls;      /* ACL run for STARTTLS */
   extern uschar *acl_smtp_vrfy;          /* ACL run for VRFY */
   extern BOOL    acl_temp_details;       /* TRUE to give details for 4xx error */
  -extern uschar *acl_var[ACL_C_MAX+ACL_M_MAX]; /* User variables */
  +extern uschar *acl_var[ACL_CVARS+ACL_MVARS]; /* User ACL variables */
   extern uschar *acl_verify_message;     /* User message for verify failure */
   extern header_line *acl_warn_headers;  /* Warning headers added by ACL */
   extern string_item *acl_warn_logged;   /* Logged lines */


  Index: macros.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/macros.h,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- macros.h    14 Nov 2005 16:09:54 -0000    1.20
  +++ macros.h    12 Dec 2005 15:58:53 -0000    1.21
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/macros.h,v 1.20 2005/11/14 16:09:54 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/macros.h,v 1.21 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -159,11 +159,6 @@
   record. */


#define WAIT_NAME_MAX 50
-
-/* The numbers of connection and message variables for ACLs */
-
-#define ACL_C_MAX 10
-#define ACL_M_MAX 10

/* Fixed option values for all PCRE functions */


  Index: smtp_in.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/smtp_in.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- smtp_in.c    13 Sep 2005 11:13:27 -0000    1.26
  +++ smtp_in.c    12 Dec 2005 15:58:53 -0000    1.27
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.26 2005/09/13 11:13:27 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.27 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -841,7 +841,9 @@
   ratelimiters_mail = NULL;           /* Updated by ratelimit ACL condition */
                      /* Note that ratelimiters_conn persists across resets. */


-for (i = 0; i < ACL_M_MAX; i++) acl_var[ACL_C_MAX + i] = NULL;
+/* The message variables follow the connection variables. */
+
+for (i = 0; i < ACL_MVARS; i++) acl_var[ACL_CVARS + i] = NULL;

/* The message body variables use malloc store. They may be set if this is
not the first message in an SMTP session and the previous message caused them
@@ -1162,7 +1164,7 @@

/* Reset ACL connection variables */

-for (i = 0; i < ACL_C_MAX; i++) acl_var[i] = NULL;
+for (i = 0; i < ACL_CVARS; i++) acl_var[i] = NULL;

/* Allow for trailing 0 in the command buffer. */


  Index: spool_in.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/spool_in.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- spool_in.c    9 Aug 2005 13:31:53 -0000    1.13
  +++ spool_in.c    12 Dec 2005 15:58:53 -0000    1.14
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/spool_in.c,v 1.13 2005/08/09 13:31:53 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/spool_in.c,v 1.14 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -236,7 +236,7 @@
   one exception. DO NOT change the default value of dont_deliver, because it may
   be forced by an external setting. */


-for (n = 0; n < ACL_C_MAX + ACL_M_MAX; n++) acl_var[n] = NULL;
+for (n = 0; n < ACL_CVARS + ACL_MVARS; n++) acl_var[n] = NULL;

   authenticated_id = NULL;
   authenticated_sender = NULL;
  @@ -376,22 +376,54 @@
     {
     if (Ufgets(big_buffer, big_buffer_size, f) == NULL) goto SPOOL_READ_ERROR;
     if (big_buffer[0] != '-') break;
  -
     big_buffer[Ustrlen(big_buffer) - 1] = 0;
  +
  +  /* For backward compatibility, we recognize "-acl", which was used before the
  +  number of ACL variables changed. Its variable number is 0-9 for connection
  +  variables, and 10-19 for message variables. */
  +
     if (Ustrncmp(big_buffer, "-acl ", 5) == 0)
       {
       int index, count;
       if (sscanf(CS big_buffer + 5, "%d %d", &index, &count) != 2)
         goto SPOOL_FORMAT_ERROR;
  -    /* Ignore if index too big - might be if a later release with more
  -    variables built this spool file. */
  -    if (index < ACL_C_MAX + ACL_M_MAX)
  +    acl_var[index] = store_get(count + 1);
  +    if (fread(acl_var[index], 1, count+1, f) < count) goto SPOOL_READ_ERROR;
  +    acl_var[index][count] = 0;
  +    }
  +
  +  /* Nowadays we use "-aclc" and "-aclm" for the different types of ACL
  +  variable, because Exim may be built with different numbers of them. */
  +
  +  else if (Ustrncmp(big_buffer, "-aclc ", 6) == 0)
  +    {
  +    int index, count;
  +    if (sscanf(CS big_buffer + 6, "%d %d", &index, &count) != 2)
  +      goto SPOOL_FORMAT_ERROR;
  +    if (index < ACL_CVARS)
         {
         acl_var[index] = store_get(count + 1);
         if (fread(acl_var[index], 1, count+1, f) < count) goto SPOOL_READ_ERROR;
         acl_var[index][count] = 0;
         }
       }
  +
  +  else if (Ustrncmp(big_buffer, "-aclm ", 6) == 0)
  +    {
  +    int index, count;
  +    if (sscanf(CS big_buffer + 6, "%d %d", &index, &count) != 2)
  +      goto SPOOL_FORMAT_ERROR;
  +    if (index < ACL_MVARS)
  +      {
  +      index += ACL_CVARS;
  +      acl_var[index] = store_get(count + 1);
  +      if (fread(acl_var[index], 1, count+1, f) < count) goto SPOOL_READ_ERROR;
  +      acl_var[index][count] = 0;
  +      }
  +    }
  +
  +  /* Other values */
  +
     else if (Ustrcmp(big_buffer, "-local") == 0) sender_local = TRUE;
     else if (Ustrcmp(big_buffer, "-localerror") == 0)
       local_error_message = TRUE;


  Index: spool_out.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/spool_out.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- spool_out.c    27 Jun 2005 14:29:44 -0000    1.8
  +++ spool_out.c    12 Dec 2005 15:58:53 -0000    1.9
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/spool_out.c,v 1.8 2005/06/27 14:29:44 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/spool_out.c,v 1.9 2005/12/12 15:58:53 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -193,10 +193,17 @@
   /* Preserve any ACL variables that are set. Because the values may contain
   newlines, we use an explicit length. */


  -for (i = 0; i < ACL_C_MAX + ACL_M_MAX; i++)
  +for (i = 0; i < ACL_CVARS; i++)
     {
     if (acl_var[i] != NULL)
  -    fprintf(f, "-acl %d %d\n%s\n", i, Ustrlen(acl_var[i]), acl_var[i]);
  +    fprintf(f, "-aclc %d %d\n%s\n", i, Ustrlen(acl_var[i]), acl_var[i]);
  +  }
  +
  +for (i = 0; i < ACL_MVARS; i++)
  +  {
  +  int j = i + ACL_CVARS;
  +  if (acl_var[j] != NULL)
  +    fprintf(f, "-aclm %d %d\n%s\n", i, Ustrlen(acl_var[j]), acl_var[j]);
     }


/* Now any other data that needs to be remembered. */