Re: Extended RETR - version 2

Solar Designer <[email protected]>
Newsgroups gmane.ietf.pop3ext
Message-ID <[email protected]>
> I'm attaching the revised version of the draft (I haven't uploaded it to
> IETF since I thought you might have more comments, which I hope). I've

Below are my proposed changes to the draft.  If the reasoning behind
some is non-obvious, just ask. :-)

--- extended-retr-draft-v2.txt	Sat Feb 19 08:05:15 2000
+++ extended-retr-draft-v2s.txt	Sat Feb 19 10:25:29 2000
@@ -81,23 +81,19 @@
         parts, more commonly known as attachments. These attachments
         are often much larger than the readable textparts.
 
-        Many clients connecting to an ISP, or even the ISP itself,
-        have their modems setup in a way that doesn't handle a noisy
-        phoneline very well. When line-quality isn't high enough, this
-        often results in a premature disconnect.
-
-        Using commands currently found in the the POP3 protocol, these
-        messages will have to be re-downloaded from scratch taking a
-        lot of unnecessary bandwidth from the ISP, not to mention
-        resources within the system itself.
+        Currently, POP3 requires messages to be re-downloaded from
+        scratch should there be a premature disconnect during a
+        message transfer. Such disconnects happen for various reasons,
+        including poor phone line quality, modem setup, network packet
+        loss, and temporary network problems.
 
         By extending the RETR command, the download-and-delete model
         that characterizes the POP3 protocol becomes more complete in
-        handling todays requirements of email. Consider the benefits:
+        handling todays requirements of email. The benefits are:
 
-        a) Less resources used on the server-side
-        b) Less time used online for the client
-        c) Less consumption of bandwidth
+        a) Less time used online for the client
+        b) Less consumption of bandwidth
+        c) Less resources used on the server side
 
 
 2. The Extended RETR Command
@@ -109,7 +105,8 @@
 
         The RETR command (as specified by RFC 1939), takes one argument
         which specifies the message to be retrieved by the client. The
-        possible responses are "+OK" and "-ERR", without the quotes.
+        allowed responses are "+OK" and "-ERR", without the quotes,
+        possibly followed by a space and a comment.
 
 
 A. Rundegren                                                    [page 2]
@@ -121,11 +118,14 @@
 
         The second argument to the extended RETR command specifies the
         offset in the message of where the transfer should start. The
-        offset is given in octets. All data that is transferred with a
-        standard RETR command should be accounted for. This means that
-        top headers, followed by messageparts will be transferred, in
-        that order. As specified by RFC 1939, responses can not be more
-        than 512 characters long, including the terminating CRLF.
+        offset is given in octets, and is calculated the way message
+        sizes are, as defined in section 11 of RFC 1939. In order to
+        ensure a valid multi-line response, with all lines terminated
+        with a CRLF pair (and never a single LF), the offset MUST NOT
+        point into the middle of a CRLF pair.
+
+        As specified by RFC 1939, responses can not be more than 512
+        characters long, including the terminating CRLF.
 
         The syntax of the extended RETR command would be:
 
@@ -140,7 +140,7 @@
 
         Description:
             If the POP3 server issues a positive response, then the
-            response given is multi-line. After the intial +OK, the
+            response given is multi-line. After the initial +OK, the
             POP3 server sends the message corresponding to the given
             message-number, starting from the offset provided, being
             careful to byte-stuff the termination character (as with
@@ -154,15 +154,24 @@
             C: RETR 1 345628
             S: +OK 1253512 octets
             S: <the POP3 server sends the message here, starting with
-                the 345628th octet of the message>
+                the 345629th octet of the message>
+            S: .
+               ...
+            C: RETR 1 1599140
+            S: +OK 0 octets
             S: .
 
+        Offsets equal to the message size are allowed, as shown in the
+        last example. This can be used by a client to check if it has
+        a complete message and continue the transfer if not, with one
+        command.
+
         If the specified offset is beyond the size of the message being
-        retrieved, or in any other way erroneous in its syntax, the
-        server should respond with a negative response code. This would
-        however not distinguish the type of error. In the following
-        section you can read about the use of extended response codes
-        to clarify errormessages.
+        retrieved, points into the middle of a CRLF pair, or is in any
+        way erroneous in its syntax, the server should respond with a
+        negative response code. This would however not distinguish the
+        type of error. In the following section you can read about the
+        use of extended response codes to clarify error messages.
 
 
 
@@ -209,10 +218,10 @@
         to work. However, this memo specifies the extended response
         codes to be used if implemented.
 
-        If the specified offset is beyond the size of the message being
-        retrieved, the extended response code should be:
+        If the specified offset is in any way erroneous, the extended
+        response code should be:
 
-            -ERR [OFFSET-OVERRUN] message exists
+            -ERR [INVALID-OFFSET] message exists
 
         If an error occured because the message was not present on the
         server, the extended response code should be:
@@ -237,13 +246,15 @@
 
         The extended RETR command introduces a new CAPA tag (RFC 2449).
         This tag tells the client that the server is able to continue
-        interrupted RETR commands. Its implementation is mandatory.
+        interrupted RETR commands. Its implementation is mandatory if
+        the server supports this extension and the CAPA command.
 
         CAPA tag:
             EXT-RETR
 
         Arguments:
-            none
+            one of ALWAYS, YES or NO in TRANSACTION state, an optional
+            ALWAYS specifier in AUTHORIZATION state
 
         Added commands:
             n/a
@@ -252,7 +263,7 @@
             RETR
 
         Announced states / possible differences:
-            both / no
+            both / yes
 
         Commands valid in states:
             TRANSACTION
@@ -262,9 +273,21 @@
 
         Discussion:
             The extended RETR capability indicates that the server is
-            capable of excepting a second argument to the RETR command
+            capable of accepting a second argument to the RETR command
             in order to resume a previously interrupted RETR command.
 
+            If a server supports this extension for at least some of
+            the maildrops, it MUST announce the extension while in
+            the AUTHORIZATION state. If the extension is supported
+            for all of the maildrops, the server SHOULD also include
+            the ALWAYS specifier, so that clients don't have to
+            reissue the CAPA command after entering the TRANSACTION
+            state. If announced in the AUTHORIZATION state, the
+            server MUST announce the capability in the TRANSACTION
+            state as well. If the extension is not supported for the
+            particular maildrop, the argument should be set to NO.
+            Otherwise, the argument can be set to either ALWAYS or
+            YES, which should be treated the same by clients.
 
 
 
@@ -293,8 +316,10 @@
 
 5. Security Considerations
 
-        Use of the extended RETR command sends messages in the clear
-        over the network.
+        This extension is believed not to introduce additional
+        security issues. Use of the RETR command sends messages in
+        the clear over the network, unless an encryption layer has
+        been previously negotiated.
 
 
 6. Acknowledgements
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.