ietf-mta-filters
[Top] [All Lists]

Re: Language for conflicting actions

1999-01-28 15:39:38
At 11:20 PM -0500 1/27/99, Tim Showalter wrote:


Well, here's the problem.  Reject and forward are mutually exclusive
(or, IMHO, should be, because I have a very hard time with the idea that
a standards-track document should provide for bogus DSNs.)

If you reject a message, you have to throw it away; the DSN says you
did so.

It was decided some time ago that reject+keep was an absurd thing to do
and should not be allowed, right?




At 11:22 PM -0500 1/27/99, Tim Showalter wrote:


Note that I'm not saying you can't run the script before parsing it.
I'm saying you have to queue up actions before doing any.  That's pretty
easy to implement, even if you sprinkle in the evaluation code in with
the parser -- you just save up a list of all the stuff you're gonna do
and sanity check it before running it.


You can prevent mutually exclusive actions by keeping a flag as to which ones you've done; you don't need to queue them all. So you could parse the script first, for example, then while executing it hit a "forward" statement and do it (and set the "forwarded" flag), then later on hit a "reject" and issue a run-time error/warning that it was ignored.


Saving up a list of everything you're going to do could force an implementation to use more memory or have scaling problems, potentially. If a script executes multiple forwards, or replies (assuming that is accepted as an extension), the execution agent could be forced to dynamically allocate a potentially unbounded amount of memory to keep all the actions (including text). Yes, you could get around this by instead keeping pointers to the statements, but that's still no business of the spec, I say.


Why should the standard force an implementation?  It seems wrong.


If we want to state that certain actions are mutually exclusive, OK. But let's not dictate implementation methods.

<Prev in Thread] Current Thread [Next in Thread>