Hi Ernesto,
On Fri, Aug 31, 2007 at 04:10:30AM +0200, Ernesto wrote:
> trying to inherit from a plugin I ran into a problem:
>
> Plugin: /usr/share/qpsmtpd/plugins/extended_rcpt_to
>
> sub init
> {
> my $self = shift;
> print STDERR __PACKAGE__, "::init...\n";
> $self->isa_plugin ( "rcpt_to" );
> }
>
>
> Configure: /etc/qpsmtpd/plugins
> ...
> extended_rcpt_to
> rcpt_ok
> ...
>
> (Logging is LOGDEBUG)
>
> gives on console:
>
> dienstleistung-kultur:~# invoke-rc.d qpsmtpd restart
> Qpsmtpd::Plugin::extended_rcpt_to::init...
> could not open plugins/rcpt_to: No such file or directory at
> /usr/share/perl5/Qpsmtpd/Plugin.pm line 121.
> invoke-rc.d: initscript qpsmtpd, action "restart" failed.
> dienstleistung-kultur:~#
>
> and in logfile:
> ...
> [11872]: check_attachment hooking data_post
> [11872]: trying to get config for plugin_dirs
> [11872]: Loading extended_rcpt_to from
> /usr/share/qpsmtpd/plugins/extended_rcpt_to
> --- EOF ---
I think I've seen something similar, which turned out to be a bug
in the 0.40 isa_plugin code not handling multiple plugin_dirs
properly. Patch attached. Not sure if it's your problem but it
smells similar.
Cheers,
Gavin
=== modified file 'lib/Qpsmtpd/Plugin.pm'
--- lib/Qpsmtpd/Plugin.pm 2007-02-10 10:19:37 +0000
+++ lib/Qpsmtpd/Plugin.pm 2007-02-25 21:35:22 +0000
@@ -117,9 +117,16 @@
# don't reload plugins if they are already loaded
return if defined &{"${newPackage}::plugin_name"};
+ # find $parent in plugin_dirs
+ my $parent_dir;
+ for ($self->qp->plugin_dirs) {
+ $parent_dir = $_ and last if -e "$_/$parent";
+ }
+ die "cannot find plugin '$parent'" unless $parent_dir;
+
$self->compile($self->plugin_name . "_isa_$cleanParent",
$newPackage,
- "plugins/$parent"); # assumes Cwd is qpsmtpd root
+ "$parent_dir/$parent");
warn "---- $newPackage\n";
no strict 'refs';
push @{"${currentPackage}::ISA"}, $newPackage;