summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorPhil Pennock <pdp@exim.org>2010-06-07 08:23:20 +0000
committerPhil Pennock <pdp@exim.org>2010-06-07 08:23:20 +0000
commit6a8de8541c16d12eceab2c6610cd209e7641217a (patch)
treeab3754913669353b7a6292e51cfabedae8fd7ad5 /doc
parent532be4499552dfab0e3173f7d3e85c81e1496147 (diff)
Added bool_lax{} expansion operator, which uses Router condition logic to
determine whether or not a string is true. Switch the multiple-condition logic to use bool_lax{}. Add note where we combine multiple conditions regarding the memory leak.
Diffstat (limited to 'doc')
-rw-r--r--doc/doc-docbook/spec.xfpt21
-rw-r--r--doc/doc-txt/ChangeLog5
-rw-r--r--doc/doc-txt/NewStuff17
3 files changed, 27 insertions, 16 deletions
diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt
index dd8db2367..8254bee51 100644
--- a/doc/doc-docbook/spec.xfpt
+++ b/doc/doc-docbook/spec.xfpt
@@ -1,4 +1,4 @@
-. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.83 2010/06/07 07:09:10 pdp Exp $
+. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.84 2010/06/07 08:23:20 pdp Exp $
.
. /////////////////////////////////////////////////////////////////////////////
. This is the primary source of the Exim Manual. It is an xfpt document that is
@@ -9812,6 +9812,17 @@ For example:
${if bool{$acl_m_privileged_sender} ...
.endd
+.vitem &*bool_lax&~{*&<&'string'&>&*}*&
+.cindex "expansion" "boolean parsing"
+.cindex "&%bool_lax%& expansion condition"
+Like &%bool%&, this condition turns a string into a boolean state. But
+where &%bool%& accepts a strict set of strings, &%bool_lax%& uses the same
+loose definition that the Router &%condition%& option uses. The empty string
+and the values &"false"&, &"no"& and &"0"& map to false, all others map to
+true.
+
+Note that where &"bool{00}"& is false, &"bool_lax{00}"& is true.
+
.vitem &*crypteq&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*&
.cindex "expansion" "encrypted comparison"
.cindex "encrypted strings, comparing"
@@ -15670,10 +15681,7 @@ If the result is any other value, the router is run (as this is the last
precondition to be evaluated, all the other preconditions must be true).
This option is unique in that multiple &%condition%& options may be present.
-In this case, the previous statement does not quite apply: the result of each
-&%condition%& option must be a string recognised by the &%bool%& expansion
-operator, or failure will be forced. The effect is to "and" the conditions
-together, as each must pass.
+All &%condition%& options must succeed.
The &%condition%& option provides a means of applying custom conditions to the
running of routers. Note that in the case of a simple conditional expansion,
@@ -15685,10 +15693,11 @@ Because of the default behaviour of the string expansion, this is equivalent to
.code
condition = ${if >{$message_age}{600}{true}{}}
.endd
-A multiple condition example:
+A multiple condition example, which succeeds:
.code
condition = ${if >{$message_age}{600}}
condition = ${if !eq{${lc:$local_part}}{postmaster}}
+condition = foobar
.endd
If the expansion fails (other than forced failure) delivery is deferred. Some
of the other precondition options are common special cases that could in fact
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 65d5d2dc9..e2904ba48 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.628 2010/06/07 07:09:10 pdp Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.629 2010/06/07 08:23:20 pdp Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -46,6 +46,9 @@ PP/14 Build without WITH_CONTENT_SCAN. Path from Andreas Metzler.
PP/15 Bugzilla 816: support multiple condition rules on Routers.
+PP/16 Add bool_lax{} expansion operator and use that for combining multiple
+ condition rules, instead of bool{}.
+
Exim version 4.72
-----------------
diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff
index 559a9f4c0..91c9b5f71 100644
--- a/doc/doc-txt/NewStuff
+++ b/doc/doc-txt/NewStuff
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.173 2010/06/07 07:09:10 pdp Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.174 2010/06/07 08:23:20 pdp Exp $
New Features in Exim
--------------------
@@ -75,14 +75,13 @@ Version 4.73
then henceforth you will have to maintain your own local patches to strip
the safeties off.
- 8. Routers now support multiple "condition" tests, IF each router yields
- a string which the bool{} operator recognises. Note that this is a departure
- from normal Router "condition" truth, requiring the stricter standard of
- "true" that ACLS use. This might be relaxed in a future release if there
- is sufficient demand.
- When debugging, bear in mind that these are internally wrapped up into
- a longer, more complicated, string. There's a reason that the bool{}
- logic is a dependency.
+ 8. There is a new expansion operator, bool_lax{}. Where bool{} uses the ACL
+ condition logic to determine truth/failure and will fail to expand many
+ strings, bool_lax{} uses the router condition logic, where most strings
+ do evaluate true.
+ Note: bool{00} is false, bool_lax{00} is true.
+
+ 9. Routers now support multiple "condition" tests,
Version 4.72