-----Original Message-----
From: David MacQuigg [mailto:macquigg(_at_)ece(_dot_)arizona(_dot_)edu]
Sent: Tuesday, November 17, 2009 3:50 PM
To: Murray S. Kucherawy
Cc: Ned Freed; Tony Finch; ned+ietf-smtp(_at_)mrochek(_dot_)com; IETF SMTP
list
Subject: Re: Abort data transfer?
--> Buffer --> Filter#1 --> Filter#2 -->
I don't understand how running the filters in series requires that the
entire message be in a buffer. In the example above, filter #1 scans
the headers and decides immediately to replace the body with something
tiny. It could abort the transfer, saving a ton of work not just by
filter #2, but also in the original data transfer to the buffer.
MTA buffers the entire message, sends it to filter #1. Filter #1 changes the
body. MTA sends the modified message to #2, including the new body. This can
only happen if they're in series, and I can't see how it would be possible if
there's not a buffer involved.
Here's an even better example: MTA buffers the entire message, sends it to
filter #1. Filter #1 orders the message to be rejected (or discarded). Filter
#2 is told "nevermind", and never has to go through the processing of the body.
For a very large message, this can be a big performance win, and again can
only happen if they're in series.