****
#
#
-###################################################
-#
-# Pipelined cases
-#
-# Basic short message
+# Server rejects RCPT. Client should not proceed to BDAT.
server PORT_S
220 Greetings
EHLO
250-Hello there
-250-PIPELINING
250 CHUNKING
MAIL FROM
+250 OK
RCPT TO
-BDAT 329 LAST
-*data 329
-250 OK mail
-250 OK rcpt
-250 OK bdat
+550 sorry, no
QUIT
-225 OK
-*eof
****
sudo exim -odf -bS
EHLO test
MAIL FROM:<sender@source.dom>
-RCPT TO:<p@test.ex>
+RCPT TO:<ebad@test.ex>
DATA
Subject: foo
QUIT
****
#
-# Error case: server wrongly expected more data, client gets timeout for data-ack
+#
+###################################################
+#
+# Pipelined cases
+#
+# Basic short message
server PORT_S
220 Greetings
EHLO
MAIL FROM
RCPT TO
BDAT 329 LAST
-*data 330
-250 good mail cmd
+*data 329
+250 OK mail
+250 OK rcpt
+250 OK bdat
+QUIT
+225 OK
+*eof
****
sudo exim -odf -bS
EHLO test
MAIL FROM:<sender@source.dom>
-RCPT TO:<q@test.ex>
+RCPT TO:<p@test.ex>
DATA
Subject: foo
QUIT
****
#
+# Error case: server wrongly expected more data, client gets timeout for data-ack
+# XXX This is a problem with data/quit pipelining. The succeeding SMTP command cannot
+# be distinguished from the data, by the errroneous server.
+# Of course, we could avoid such pipelining on the client side, when BDAT is used.
+# But - is this any worse than a server failing to spot the data-dot under DATA?
+# I think not; both are culpable, and there is only so much the client can do.
+#server PORT_S
+#220 Greetings
+#EHLO
+#250-Hello there
+#250-PIPELINING
+#250 CHUNKING
+#MAIL FROM
+#RCPT TO
+#BDAT 329 LAST
+#*data 330
+#250 good mail cmd
+#****
+#sudo exim -odf -bS
+#EHLO test
+#MAIL FROM:<sender@source.dom>
+#RCPT TO:<q@test.ex>
+#DATA
+#Subject: foo
+#
+#data
+#.
+#QUIT
+#****
+#
# Error case: server wrongly expected less data
# client get the data-ack, sends quit - but server
# sees a munged quit due to the outstanding data tail