On Fri, 2011-11-25 at 20:42 +0100, Karsten Bräckelmann wrote:
> On Fri, 2011-11-25 at 11:49 -0500, Kevin A. McGrail wrote:
> > It was a brilliantly simple idea but this concept won't work if I am
> > looking at things correctly. The loop for the pattern test appears to
> > test line by line. So if a single line is less than 200 chars, you are
> > hitting the rule.
>
> Well, that "line" actually is a full, textual MIME-part. Not a line of
> the source message.
Right, that's what I get for looking at 3.2 code. *sigh*
The above is true for 3.2, rawbody REs are matched against strings
holding an entire (textual) MIME-part.
Since 3.3 the code changed, and the per-MIME-part strings as above are
in addition split up into chunks between 1k and 2k bytes. Rawbody REs
are matched against the chunks.
See also bug 5717 and revision 629888.
The documentation is still confusingly incorrect.
FWIW, this change has no effect on the set of rules discussed in this
thread, as long as the size limit (200 bytes here) is less than the
minimum chunk size of 1024 bytes.
--
char *t="\10pse\0r\0dtu\0.@ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4";
main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1:
(c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}