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.