While looking at PIPELINING support within SAUCE last night, the following
issues were highlit by Ian Jackson. The RFC2920 (STD 60) spec for SMTP
command pipelining includes no precise definition of a "command group",
and in particular, although it's implied that the "last command of a
command group" is one that should wait for replies, the server:
| (9) MUST NOT flush or otherwise lose the contents of the TCP input
| buffer under any circumstances whatsoever.
Now, this means that it's quite reasonable to suggest pipelining violations
in the situations where no pipelining has been advertised, but if it has,
then it appears that the client can do pretty much what it wants (within
the standard).
Other things about this standard appear to be totally braindead, (VRFY causing
a change of state - you what!?) so it's not clear that a client can't
believe that it's allowed to send other things, because of the unclearness
between what goes in one TCP send operation and the places where it is
pausing for a response. In particular, if one does several send operations
one after the other, but without waiting for a response (having switched
off Nagle, of course), then it would appear to be conformant to STD60 as
specified, but would cause a synchronization error in exim.
So, is it a bug for exim to say "synchronization error" in those other
situations?
MBM
--
Matthew Byng-Maddick <mbm@???> http://colondot.net/
(Please use this address to reply)