2b25 problems and possible solutions

From: Daniel Stenberg <Daniel.Stenberg_at_frontec.se_at_hypermail-project.org>
Date: Tue, 12 Oct 1999 00:54:29 +0200 (MET DST)
Message-ID: <Pine.GSO.4.10.9910120042430.3080-200000_at_metal.sth.frontec.se>


Hi

First out: the 2b25 problem reported to not create any html-file (the problem file is named "first"). I could repeat it.

It turned out that because the 'isinheader' variable was still TRUE when it fell out of the main loop it didn't add any mail body nor did it increase the counter and therefore it wasn't counted as a mail (even though the attachments were stored properly).

The attached patch changes this behaviour. I don't consider this "fix" as 100% sure yet, as it removes a few checks and I haven't really investigated all the side effects a change like this will bring into the light.

Secondly: in the same report, we got the mailbox named 'missing_thread'. This is a very interesting problem. I have not yet found a solution, and as the time has passed midnight I thought I'd share what I've found so far and hope that some of you will help me continue with this:

crossindexthread1() in parse.c is the guilty function. It doesn't add _any_ members to the list named 'threadlist'. Not even though my attached patch removes one of the unnecessary (and quite time consuming) tests.

I'm afraid that this function is a left-over from the past that was brought in again after I had introduced my whole new routines (threadprint.c) when there were bugs in my functions. This caused the situation to be a little weird, since we have this mix of old and new functions. Anyway, as can be seen in that function, the loop in the beginning prevents the handling of any replylist-mail that has a message-number like the input mail.

A dump from my debug-session shows:

(gdb) p *replylist

$5 = {frommsgnum = 2, msgnum = 0, data = 0x8063cd8, maybereply = 0,   next = 0x80644b0}
(gdb) p *replylist->next

$6 = {frommsgnum = 0, msgnum = 1, data = 0x8064150, maybereply = 1,   next = 0x80644f0}
(gdb) p *replylist->next->next

$7 = {frommsgnum = 0, msgnum = 2, data = 0x8064618, maybereply = 1, next = 0x0}

A circular behavior! :-O Message 2 says it is from message 0, while message 0 it is from message 0 and messsage 1 is also from message 0.

This makes the loop in the top of the crossindexthread1() function to _always_ set isreply=1 (as all the mails are defined as being replies) and therefore, no mails is ever added to the threadlist...

Now, all there's left is to make sure that the replylist doesn't contain such a weirdo list!

Have a good night!

-- 
             Daniel Stenberg - http://www.fts.frontec.se/~dast
   ech`echo xiun|tr nu oc|sed 'sx\([sx]\)\([xoi]\)xo un\2\1 is xg'`ol

Received on Tue 12 Oct 1999 12:53:19 AM GMT

This archive was generated by hypermail 2.2.0 : Thu 22 Feb 2007 07:33:51 PM GMT GMT