https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7987

--- Comment #3 from Michael Storz <[email protected]> ---
Well, it took me more than a day of carefully reviewing the call diagram and
implementation of bgsend_and_start_lookup to come to this conclusion. My first
thought was that maybe some tests are not working properly and therefore
overlooked that some calls to rule_pending are missing. Only afterwards did I
realize that it was the other way around.

We both know how complicated all the rule processing is. Therefore, from my
point of view, it is extremely important to remove everything superfluous so
that we have a chance to understand how the different algorithms work. This has
nothing to do with cosmetic details, but is essential.

Next, I'm going to look at asynchronous tag processing. After your second
change to FromNameSpoof.pm, I'm pretty sure there's a general processing error
here. But I'll have to check that out in more detail.

The use of the rule_pending and rule_ready routines you introduced should be
clearly described and also implemented accordingly. From the current
description I understand that the routines are to be used in principle with all
asynchronous eval functions, so that the evaluation of the meta routines works.
I am of the opinion that this description is wrong and does not correspond to
your implementation. 

If the processing of the asynchronous calls, i.e. the queueing, polling and
dequeueing is done centrally, then the handling must be done automatically. The
end handling should then also be done centrally. This applies to both the
central mechanism via bgsend_and_start_lookup and via action_depends_on_tags.
For bgsend_and_start_lookup, I'm pretty sure that's how you implemented it. And
that's a big step forward.

rule_pending/rule_ready should only become necessary if the processing is
decentralized and the periodic queries are each triggered via check_tick. This
is the case with DCC.pm, Pyzor.pm and Razor2.pm. Here it also makes sense to
have the end handling done by the respective plugin and triggered by
check_cleanup. And also here, I think, you have implemented it exactly like
that.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to