one part of the rfc states: 4.1.1.5 RESET (RSET)
... There are circumstances, contrary to the intent of this
specification, in which an SMTP server may receive an
indication that
the underlying TCP connection has been closed or reset. To
preserve
the robustness of the mail system, SMTP servers SHOULD be
prepared
for this condition and SHOULD treat it as if a QUIT had been
received
before the connection disappeared.
ok, that says treat it as though a quit happened, which just
doesn't sound
right to me. If DATA was issued and I'm waiting to see a
CRLF.CRLF, and
the client closes the connection, I would think that it
would be better
to assume the entire message hasn't been sent.
however later I see:
4.1.1.10 QUIT (QUIT)
... If the connection is closed prematurely due to
violations
of the above or system or network failure, the server MUST
cancel any
pending transaction, but not undo any previously completed
transaction, and generally MUST act as if the command or
transaction
in progress had received a temporary error (i.e., a 4yz
response).
which doesn't quite make sense to me because basically it
sounds like this:
DATA -> oops! -> back to MAIL state -> return a 4xx
code
but wait, the socket is closed!
So does anybody have some words of wisdom?
I'm thinking the correct behaviour is to treat it as the
following:
client closed socket
server treats it as a RSET and QUIT.
I'm reachable at jeff @ virtualbuilder dot com
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!