bug-mailutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug-mailutils] Problem with timeout interaction


From: Jeff Bailey
Subject: [bug-mailutils] Problem with timeout interaction
Date: Tue, 7 Oct 2003 16:28:37 -0700
User-agent: Mutt/1.5.4i

I've got a strange problem - What's happening seems to be RFC compliant,
but causes Eudora and Outlook Express to both refuse to pick up mail. 
Basically, if an email message has been marked deleted in the status
header in the mbox file, the pop3d does the right thing and doesn't
include that message number in the stat/list/etc.

Eudora and OE both seem to have "issues" with missing messages on the
initial list.

But aha, here's the real question:

Why is there a delete message in the mbox file? =)

After percussively applying my forehead to a brick wall for a day or so,
I've come up with this scenario to reproduce:

telnet localhost 110
USER foo
PASS bar
STAT
LIST
DELE 1

(wait 30 seconds for timeout to happen)

And at this point, we have an email with the deleted flag.

pop3d_abquit calls mailbox_flush.

RFC1939, Section 3:
"When the timer expires, the session does NOT enter
the UPDATE state--the server should close the TCP connection without
removing any messages or sending any response to the client."

Section 6:
"If a session terminates for some reason other than a client-issued
QUIT command, the POP3 session does NOT enter the UPDATE state and
MUST not remove any messages from the maildrop."

These seem to indicate to me that mailbox_flush should not be called in
the event of abnormal termination.

2003-10-07  Jeff Bailey

        * pop3d/extra.c: Do not issue a mailbox_flush on abnormal
        termination.  None of the current state should be saved.

--- pop3d/extra.c       29 Aug 2003 19:09:31 -0000      1.29
+++ pop3d/extra.c       7 Oct 2003 23:16:59 -0000
@@ -91,7 +91,6 @@ pop3d_abquit (int reason)
   if (state != AUTHORIZATION)
     {
       pop3d_unlock ();
-      mailbox_flush (mbox, 0);
       mailbox_close (mbox);
       mailbox_destroy (&mbox);
     }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]