2b25 problems and possible solutions

---------

From: Daniel Stenberg (Daniel.Stenberg@frontec.se)
Date: Mon Oct 11 1999 - 17:54:29 CDT


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



---------

This archive was generated by hypermail 2.1.5.