On Sat, 29 Nov 2008, Arnt Gulbrandsen wrote:
I _thought_ sieve required short-circuiting, but didn't feel courageous
enough reply to Dilian's message...
The base spec doesn't require it because it's not observable without
variables.
The only occurence of "short-curcuit" in 3028 was removed in 5228, and I
didn't see anything to replace it. Further, and perhaps more seriously,
I don't see any requirement of order. As far as I can see, a sieve
implementation can evalue header and envelope in either order in this
case:
An implementation can do that only if the 'variables' extensions has not
been required. The variables spec, RFC 5229, says this in section 3.2:
The interpreter MUST short-circuit tests, i.e., not perform more
tests than necessary to find the result. Evaluation order MUST be
left to right. If a test has two or more list arguments, the
implementation is free to choose which to iterate over first.
Philip Guenther