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

Etusivu
Poista viesti
Vastaa
Lähettäjä: Philip Hazel
Päiväys:  
Vastaanottaja: exim-cvs
Uudet otsikot: Re: [exim-dev] [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff exim/exim-src/src acl.c globals.c globals.h exim/exim-test/confs 0552 exim/exim-test/log 0552 exim/exim-test/scripts/0
Aihe: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff exim/exim-src/src acl.c globals.c globals.h exim/exim-test/confs 0552 exim/exim-test/log 0552 exim/exim-test/scripts/0000-Basic 0552
ph10 2007/02/05 12:35:47 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff 
    exim-src/src         acl.c globals.c globals.h 
  Added files:
    exim-test/confs      0552 
    exim-test/log        0552 
    exim-test/scripts/0000-Basic 0552 
  Log:
  Flush SMTP output buffer before "delay" in an ACL; add control =
  no_delay_flush to disable this behaviour.


  Revision  Changes    Path
  1.468     +2 -0      exim/exim-doc/doc-txt/ChangeLog
  1.135     +4 -0      exim/exim-doc/doc-txt/NewStuff
  1.70      +20 -5     exim/exim-src/src/acl.c
  1.68      +1 -0      exim/exim-src/src/globals.c
  1.48      +1 -0      exim/exim-src/src/globals.h
  1.1       +66 -0     exim/exim-test/confs/0552 (new)
  1.1       +19 -0     exim/exim-test/log/0552 (new)
  1.1       +20 -0     exim/exim-test/scripts/0000-Basic/0552 (new)


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.467
  retrieving revision 1.468
  diff -u -r1.467 -r1.468
  --- ChangeLog    31 Jan 2007 16:52:12 -0000    1.467
  +++ ChangeLog    5 Feb 2007 12:35:46 -0000    1.468
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.467 2007/01/31 16:52:12 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.468 2007/02/05 12:35:46 ph10 Exp $


Change log file for Exim from version 4.21
-------------------------------------------
@@ -70,6 +70,8 @@
PH/13 Added ${rfc2047d: to decoded RFC 2047 strings.

PH/14 Added log_selector = +pid.
+
+PH/15 Flush SMTP output before delaying, unless control=no_delay_flush is set.


Exim version 4.66

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.134
  retrieving revision 1.135
  diff -u -r1.134 -r1.135
  --- NewStuff    31 Jan 2007 16:52:12 -0000    1.134
  +++ NewStuff    5 Feb 2007 12:35:46 -0000    1.135
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.134 2007/01/31 16:52:12 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.135 2007/02/05 12:35:46 ph10 Exp $


   New Features in Exim
   --------------------
  @@ -231,6 +231,10 @@
   10. There is a new log selector called "pid", which causes the current process
       id to be added to every log line, in square brackets, immediately after the
       time and date.
  +
  +11. Exim has been modified so that it flushes SMTP output before implementing
  +    a delay in an ACL. This behaviour can be disabled by obeying control =
  +    no_delay_flush at some earlier point.



Version 4.66

  Index: acl.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/acl.c,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- acl.c    30 Jan 2007 11:45:20 -0000    1.69
  +++ acl.c    5 Feb 2007 12:35:46 -0000    1.70
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/acl.c,v 1.69 2007/01/30 11:45:20 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/acl.c,v 1.70 2007/02/05 12:35:46 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -187,7 +187,8 @@
     CONTROL_FAKEDEFER,
     CONTROL_FAKEREJECT,
     CONTROL_NO_MULTILINE,
  -  CONTROL_NO_PIPELINING
  +  CONTROL_NO_PIPELINING,
  +  CONTROL_NO_DELAY_FLUSH
   };


   /* ACL control names; keep in step with the table above! This list is used for
  @@ -219,9 +220,10 @@
     US"fakereject",
     US"no_multiline",
     US"no_pipelining",
  +  US"no_delay_flush"
   };


-/* Flags to indicate for which conditions /modifiers a string expansion is done
+/* Flags to indicate for which conditions/modifiers a string expansion is done
at the outer level. In the other cases, expansion already occurs in the
checking functions. */

  @@ -593,6 +595,9 @@
       (1<<ACL_WHERE_NOTSMTP_START),


     (1<<ACL_WHERE_NOTSMTP)|                          /* no_pipelining */
  +    (1<<ACL_WHERE_NOTSMTP_START),
  +
  +  (1<<ACL_WHERE_NOTSMTP)|                          /* no_delay_flush */
       (1<<ACL_WHERE_NOTSMTP_START)
   };


  @@ -616,6 +621,7 @@
     { US"caselower_local_part",    CONTROL_CASELOWER_LOCAL_PART, FALSE },
     { US"enforce_sync",            CONTROL_ENFORCE_SYNC, FALSE },
     { US"freeze",                  CONTROL_FREEZE, TRUE },
  +  { US"no_delay_flush",          CONTROL_NO_DELAY_FLUSH, FALSE },
     { US"no_enforce_sync",         CONTROL_NO_ENFORCE_SYNC, FALSE },
     { US"no_multiline_responses",  CONTROL_NO_MULTILINE, FALSE },
     { US"no_pipelining",           CONTROL_NO_PIPELINING, FALSE },
  @@ -2605,6 +2611,10 @@
         pipelining_enable = FALSE;
         break;


  +      case CONTROL_NO_DELAY_FLUSH:
  +      disable_delay_flush = TRUE;
  +      break;
  +
         case CONTROL_FAKEDEFER:
         case CONTROL_FAKEREJECT:
         fake_response = (control_type == CONTROL_FAKEDEFER) ? DEFER : FAIL;
  @@ -2720,13 +2730,18 @@
           can't. The poll() function does not do the right thing, and in any case
           it is not always available.


  -        NOTE: If ever this state of affairs changes, remember that we may be
  +        NOTE 1: If ever this state of affairs changes, remember that we may be
           dealing with stdin/stdout here, in addition to TCP/IP connections.
  -        Whatever is done must work in both cases. To detected the stdin/stdout
  -        case, check for smtp_in or smtp_out being NULL. */
  +        Also, delays may be specified for non-SMTP input, where smtp_out and
  +        smtp_in will be NULL. Whatever is done must work in all cases.
  +
  +        NOTE 2: The added feature of flushing the output before a delay must
  +        apply only to SMTP input. Hence the test for smtp_out being non-NULL.
  +        */


           else
             {
  +          if (smtp_out != NULL && !disable_delay_flush) fflush(smtp_out);
             while (delay > 0) delay = sleep(delay);
             }
           }


  Index: globals.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/globals.c,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- globals.c    31 Jan 2007 16:52:12 -0000    1.67
  +++ globals.c    5 Feb 2007 12:35:46 -0000    1.68
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/globals.c,v 1.67 2007/01/31 16:52:12 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/globals.c,v 1.68 2007/02/05 12:35:46 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -499,6 +499,7 @@
   int     demime_ok              = 0;
   uschar *demime_reason          = NULL;
   #endif
  +BOOL    disable_delay_flush    = FALSE;
   #ifdef ENABLE_DISABLE_FSYNC
   BOOL    disable_fsync          = FALSE;
   #endif


  Index: globals.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/globals.h,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- globals.h    30 Jan 2007 15:10:59 -0000    1.47
  +++ globals.h    5 Feb 2007 12:35:46 -0000    1.48
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/globals.h,v 1.47 2007/01/30 15:10:59 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/globals.h,v 1.48 2007/02/05 12:35:46 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -278,6 +278,7 @@
   extern int     demime_ok;              /* Nonzero if message has been demimed */
   extern uschar *demime_reason;          /* Reason for broken MIME container */
   #endif
  +extern BOOL    disable_delay_flush;    /* Don't flush before "delay" in ACL */
   #ifdef ENABLE_DISABLE_FSYNC
   extern BOOL    disable_fsync;          /* Not for normal use */
   #endif


Index: 0552
====================================================================
# Exim test configuration 0552

DDF=
SERVER=

exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
rfc1413_query_timeout = 0s
spool_directory = DIR/spool
log_file_path = DIR/spool/log/SERVER%slog
gecos_pattern = ""
gecos_name = CALLER_NAME

# ----- Main settings -----

acl_not_smtp = check_not
acl_smtp_connect = check_connect
acl_smtp_rcpt = check_rcpt

queue_only

# ----- ACL -----

begin ACL

  check_connect:
    accept DDF


  check_rcpt:
    accept delay = 1s


  check_not:
    accept delay = 1s
           logwrite = Accept non-SMTP



# ----- Routers -----

begin routers

  r1:
    driver = accept
    transport = t1



# ----- Transports -----

begin transports

  t1:
    driver = smtp
    port = PORT_D
    hosts = 127.0.0.1
    allow_localhost
    command_timeout = 2s



# ----- Retry -----

begin retry

* * F,1d,1s


# End

Index: 0552
====================================================================
1999-03-02 09:44:33 10HmaX-0005vi-00 Accept non-SMTP
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaX-0005vi-00 == userx1@??? R=r1 T=t1 defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after MAIL FROM:<CALLER@???> SIZE=1310
1999-03-02 09:44:33 10HmaX-0005vi-00 == userx2@??? R=r1 T=t1 defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after MAIL FROM:<CALLER@???> SIZE=1310
1999-03-02 09:44:33 10HmaX-0005vi-00 == userx3@??? R=r1 T=t1 defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after MAIL FROM:<CALLER@???> SIZE=1310
1999-03-02 09:44:33 End queue run: pid=pppp -qf
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaX-0005vi-00 => userx1@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]
1999-03-02 09:44:33 10HmaX-0005vi-00 -> userx2@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]
1999-03-02 09:44:33 10HmaX-0005vi-00 -> userx3@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qf

******** SERVER ********
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
1999-03-02 09:44:33 SMTP connection from localhost (myhost.test.ex) [127.0.0.1] lost while reading message data (header)
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? H=localhost (myhost.test.ex) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@???

Index: 0552
====================================================================
# autoflush for delay
need_ipv4
#
# Put a message on the queue (queue_only is set); this tests that a
# non-SMTP delay still works.
exim userx1@??? userx2@??? userx3@???
****
# This daemon is "old-style", without the flush
exim -DSERVER=server -DDDF=control=no_delay_flush -bd -oX PORT_D
****
exim -qf
****
killdaemon
# This daemon should flush before delaying
exim -DSERVER=server -bd -oX PORT_D
****
exim -qf
****
killdaemon
no_msglog_check