RSET could be query/mode port 'reset or indeed a write port 'reset
maxim: messages marked for deletion are no long accessible, but their message number is still taken
Anyway, this logic can be added later on easily enough. basic retrieval is working :)
with FSM or without :) ?
I only did a FSM version. Yours you have to answer that one.
maybe deleted messages should be completely ignored in all actions, so that they seem to be deleted immediately.
IIRC once deleted, messages cannot be "undelete" unless the port is shutdown and a new connection made.
you have to issue an RSET to undelete all messages at once.
and yes, they should be ignored in a positional scheme :)
You can RSET in transactional mode
@Andreas, did your pop3 scheme check every single line of data coming down for codes?
no, you only have to check the immediate response line or the line after that, depending on the command.
for message data (RETR) you know beforehand how many data you ought to receive.
then it's just a question if you want to rely on that, or be very defensive, assume the pop3 server is broken regarding size calculation and rather continuously check for `crlf #"." crlf` instead.
I'm being defensive and also checking for octet stuffing
unfortunately, quite a few pop3 servers indeed are broken in this regard, however, they typically err in giving too small sizes. so you can just read as much as you are told to and then switch to "dot-scanning".
Probably why my version times out on a 5Mb file after a minute
Graham, I made some corrections to the tls scheme so the problems(eg. write from connect and the port/data compatibility) you reported should be fixed. Please get it from here http://rebol.atwebpages.com/scripts/prot-tls.r and give it a try.