Source: exim4 Severity: wishlist The localscan_dlopen patch makes it possible to provide various scanning packages that can be easily installed without having to recompile Exim. The benefit of this is diminished by the fact that there can only be one local_scan library in use at a time. At the moment, there is only one package of this kind in Debian, but someone could want to write a function of their own in addition.
The way local_scan functions are called should make it not too hard to call more than one of them. First, treat local_scan_path as a list. Then just dlopen each library in turn and pass the file descriptor (with the correct offset, of course). The question is just what to do with the return value and error message, especially if one filter returns LOCAL_SCAN_TEMPREJECT. I suggest as follows: If all filters return LOCAL_SCAN_ACCEPT, LOCAL_SCAN_ACCEPT_QUEUE, or LOCAL_SCAN_ACCEPT_FREEZE, the result is the most restrictive one. If one filter returns LOCAL_SCAN_REJECT or LOCAL_SCAN_REJECT_NOLOGHDR, the following filters are not run and the result is what the filter returned with the error message given by it. If one filter returns LOCAL_SCAN_TEMPREJECT, then there is the option of letting the following filters run, or return immediately. If the following filters run, and another filter returns LOCAL_SCAN_REJECT[_NOLOGHDR], then that result is used, otherwise the result is the one from the first termprejecting filter. If any filter fails to load, the result is as if that filter returned LOCAL_SCAN_TEMPREJECT (isn't LOCAL_SCAN_TEMPREJECT_NOLOGHDR better?), or possibly an immediate LOCAL_SCAN_TEMPREJECT. -- Magnus Holmgren [EMAIL PROTECTED] (No Cc of list mail needed, thanks) "Exim is better at being younger, whereas sendmail is better for Scrabble (50 point bonus for clearing your rack)" -- Dave Evans
pgpEzIoTXU2bV.pgp
Description: PGP signature