Am 2022-05-08 06:43, schrieb bugzilla-dae...@spamassassin.apache.org:
https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7987

--- Comment #4 from Henrik Krohns <apa...@hege.li> ---
I mostly agree with everything, great to have extra eyeballs. Can you comment if my previous list comment and Revision 1900667 additions cleared any things
up for you and changes anything?


Unfortunately not, I'm still struggling to understand the various aspects of processing. However, I understand, that a call of rule_ready for a sync rule makes sense. It does not need a call to rule_pending in this case.

Example for a problem: a rule_pending must be followed by a rule_ready or a got_hit. But how a got_hit should work instead of a rule_ready is a mystery to me. In sub do_meta_tests the query whether a rule dependency exists is defined as:

next RULE unless exists $h->{$deprule} && !$tp->{$deprule} && !$pl{$deprule};

(condition rearranged by me to make it easier to understand). If we have an asynchronous rule $deprule other than a DNS lookup, a call to rule_pending makes an entry in $tp. If the rule is true, the call to got_hit makes an entry in $h, but it does not delete the entry in $tp unlike rule_ready. Thus, the $deprule dependency is still present and the rule cannot be evaluated. Or did I miss something?

Regards,
Michael

PS: Unfortunately, I do not have a running 4.0 system. Therefore I cannot test it myself.

Reply via email to