-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Barry Jaspan writes: > I have recently upgraded my SpamAssassin-based product to use SA > 3.0-rc2. Generally, I think 3.0 is excellent; congratulations to the > developers. I have a few comments: > > - A bug was introduced between rc1 and rc2. In BayesStore/DBM.pm, the > calls to tie were changed to store the return value. For example, > > $res = tie %new_toks, "DB_File", "${name}.new", O_RDWR|O_CREAT|O_EXCL, > (oct ($main->{conf}->{bayes_file_mode}) & 0666); > umask $umask; > return 0 unless $res; > > Later, %new_toks is untied and files are renamed. Storing $res, however, > keeps a handle to the underlying file open, so the rename fails (at least > on Windows). The fix is simple: after "return 0...", just add: > > undef $res; Hi Barry! gack. that definitely needs a BZ entry, a big bug on windows :( > - The plugin interface is a great idea; it allowed me to move code I > previously had to integrate into each new version of SA out of the SA > tree. As currently designed, however, plugin methods are effectively > restricted to returning integers due to the comparison with > INHIBIT_CALLBACKS. I suggest that as few assumptions as possible be made > about plugin method return values, and we can just require methods to call > inhibit_callbacks() if they want to instead of returning INHIBIT_CALLBACKS. yep, good point. I hadn't spotted that. could you open a separate bug on that? > - I suggest adding a plugin callback to PerMsgStatus::_get_tag, so plugins > can define their own report tags. sure! another bug ;) > - I also suggest adding plugin callbacks (a) to get_report(), so plugins > can change the report format, and (b) to report_safe() etc., so plugins can > modify the rewritten message. The implementation of these is less clear > than the _get_tag callback, though. hmm. yep. I'd suggest that this and the previous one could share a "bug" on the BZ, since they're quite related. Also, since you're keen to see them in the code and working, I suggest that you go for it, come up with some kind of implementation (even if just a stub "demo" one) so we have something to think about, and I'm sure we'll have some constructive comments ;). It's unlikely we'd get around to implementing these ourselves otherwise, unfortunately... as Theo said, we use the BZ to track pretty much all patches, feature reqs, work items, and discussion thereof ;) thanks! - --j. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Exmh CVS iD8DBQFBNhVmQTcbUG5Y7woRAjZYAJ9Q1m5rnYi2fNwwTGwxKfhlk8W30QCcDjCp HC/4ukY4xcTawbhLbYj9ej8= =cBys -----END PGP SIGNATURE-----