Thanks... you beat me to this observation. After sending, a nibble of doubt
led me to revisit RFC 2920, the standard version of pipelining. That document
does not require that there be a valid recipient before sending data, and
advises the server to accept and discard the data.
Based on this, I change my position to resolve what is now clearly an internal
contradiction in favor of the clarifying that when pipelining with BDAT, the
server is required to accept BDAT and all associated data even if there are no
From: Arnt Gulbrandsen [mailto:arnt(_at_)gulbrandsen(_dot_)priv(_dot_)no]
Sent: Friday, June 13, 2003 3:50 AM
To: Keith Moore
Cc: Vaudreuil, Greg M (Greg); Matti Aarnio; ietf-smtp(_at_)imc(_dot_)org
Subject: Re: BDAT, RFC 3030 protocol clarification?
Keith Moore writes:
my understanding was that the client should not send BDAT commands
unless it had received a 2xx response from MAIL and at least one of
the RCPT commands.
Well, 1854 says sending DATA is okay, 3030 says BDAT and DATA are the
same, and AFAIK nothing says that in this respect the two are
different. IMO the successor to 3030 should say so.
failure to do so could cause synchronization problems if the server
then said 5xx in response to BDAT because it wasn't going to accept
the message anyway.
IMHO if a server is ignoring data in the TCP buffer when it claims to
support PIPELINING, that server is broken and we shouldn't try to fix
it in the spec. but if a server complains when a client sends BDAT
for no valid recipients,
I don't blame the server for that.
I suggest that if a BDAT-capable server receives BDAT, it SHOULD either
receive and discard the data, or else send its response and drop the
connection. Shouldn't need saying, but I guess it does not hurt.