FPs and SA 3.2.0

Paul Bijnens Paul.Bijnens at xplanation.com
Mon May 21 18:28:01 IST 2007


On 2007-05-21 17:10, Julian Field wrote:
> 
> 
> Paul Bijnens wrote:
>> On 2007-05-16 17:41, Julian Field wrote:
> 
>>> I'll put it in the main codebase then. Perl has some very subtle bugs in 
>>> it...
>>>     
>> I believe I don't need to teach perl to Julian (rather the other way
>> around :-) ), but anyway...
> 
> 
>>>>>>       
>>>>>>           
>>>>>>>   # JKF 3/10/2005
>>>>>>>   my $temp = @HitList;
>>>>>>>   $temp = $temp + 0;
>>>>>>>   $temp = 0 unless $HitList[0] =~ /a-z/i;
>>>>>>>   return ($temp, join(', ', @HitList));
>>>>>>> }
>>>>>>>
>>>>>>> Let's see if that helps. According to the book, the 2 middle lines
>>>>>>> shouldn't be needed at all.
>>>>>>>             
>> To me this seems like the array @HitList contains an empty or undef
>> value.  The match against "/[a-z]/i"   (or was that really intended
>> "/a-z/i"??)
> No, your version would match against any string that contained the 
> string "a-z" in it (in upper or lower case).

Excuse me :-) but "/a-z/i" is your version and that will search for
a string "a-z" lower or upper case.  My version, "/[a-z]/i", will match
a name with at least one letter in it.  Which is what you're trying to
do, I believe.
You're effectively removing any RBL hits now, which is the main reason
why no more FP's got hit by the current beta tester(-s? -- only one
person as far I see had the problem).

http://lists.mailscanner.info/pipermail/mailscanner/2007-May/073331.html

I'm still interested in the exact list of RBLs in his config.
Does it happen when 1 list is added? Two?  Some particular list only?


>>  just hides the source of the real error: getting an empty
>> value for RBL name.
> 
> If I printed the string of @HitList it turned out to have no contents, 

How?    Something like:

    @HitList = ( "" );	# somehow this ended up in the list
    $temp = @HitList;
    warn("HitList contains $temp entries: '@HitList'\n");

No (visible) contents, but still one element in the array.


> so the scalar of it should have been zero. I have seen the problem of 
> "0" not always equaling zero a few other times, hence the addition of 
> zero to it to try to fix it, which has normally fixed the problem 

You can have that problem with "" or undef, acting as 0 in calculations
but not showing up as a "0" when printed. Indeed fixed by explicitly
converting to number by adding "+ 0".

> elsewhere. The new modification has only been recently needed, the code 
> has worked perfectly well for years (the previous version was very old 
> code). If it had been needed before, people would have been complaining 
> loudly about this for the past few years, and they haven't been. So if 
> the start of the list doesn't contain a letter (all RBL names must 
> contain at least 1 letter or they wouldn't work) then the list must 
> actually be empty, so I force it to return zero.

So we have to find out where the list element comes from that does
not contain a letter, but is empty instead.  Instead of covering up the
bug here.  (Still not convinced it is a perl bug.)
Maybe most people use some RBLs at the MTA-level to block the incoming
mail completely and/or use other RBLs in SA for scoring, and let the
spam list entry in MailScanner empty.  Or the bug happens only on
a timeout, like suggested in the OP problem, or only for certain
combinations of timeout values, etc, etc.


> 
>> Now finding out where the empty value is coming from, is -- at my
>> current understanding of the code -- not yet successful.
> 
> Yes. I have another demo of a Perl bug which I'll post for you if you 
> like. Perl is not bug-free.

Sure not.  But, speaking for myself, it's usually in my own
programs, and not in the perl compiler, that I find the bugs.  :-)


-- 
Paul Bijnens, xplanation Technology Services        Tel  +32 16 397.511
Technologielaan 21 bus 2, B-3001 Leuven, BELGIUM    Fax  +32 16 397.512
http://www.xplanation.com/          email:  Paul.Bijnens at xplanation.com
***********************************************************************
* I think I've got the hang of it now:  exit, ^D, ^C, ^\, ^Z, ^Q, ^^, *
* F6, quit, ZZ, :q, :q!, M-Z, ^X^C, logoff, logout, close, bye, /bye, *
* stop, end, F3, ~., ^]c, +++ ATH, disconnect, halt,  abort,  hangup, *
* PF4, F20, ^X^X, :D::D, KJOB, F14-f-e, F8-e,  kill -1 $$,  shutdown, *
* init 0, kill -9 1, Alt-F4, Ctrl-Alt-Del, AltGr-NumLock, Stop-A, ... *
* ...  "Are you sure?"  ...   YES   ...   Phew ...   I'm out          *
***********************************************************************



More information about the MailScanner mailing list