Author: msergeant
Date: Fri Nov 16 07:06:30 2007
New Revision: 814
Modified:
trunk/lib/Qpsmtpd.pm
Log:
Hook/plugin caching
Modified: trunk/lib/Qpsmtpd.pm
==============================================================================
--- trunk/lib/Qpsmtpd.pm (original)
+++ trunk/lib/Qpsmtpd.pm Fri Nov 16 07:06:30 2007
@@ -18,7 +18,7 @@
# need to do this differently that other plugins so as to
# not trigger logging activity
my $self = shift;
- return if $self->{hooks}->{"logging"};
+ return if $hooks->{"logging"};
my $configdir = $self->config_dir("logging");
my $configfile = "$configdir/logging";
my @loggers = $self->_config_from_file($configfile,'logging');
@@ -263,12 +263,14 @@
sub load_plugins {
my $self = shift;
- $self->log(LOGWARN, "Plugins already loaded") if $self->{hooks};
- $self->{hooks} = {};
-
my @plugins = $self->config('plugins');
my @loaded;
+ if (keys %$hooks) {
+ $self->log(LOGWARN, "Plugins already loaded");
+ return @plugins;
+ }
+
for my $plugin_line (@plugins) {
my $this_plugin = $self->_load_plugin($plugin_line, $self->plugin_dirs);
push @loaded, $this_plugin if $this_plugin;
@@ -345,7 +347,6 @@
sub run_hooks {
my ($self, $hook) = (shift, shift);
- my $hooks = $self->{hooks};
if ($hooks->{$hook}) {
my @r;
my @local_hooks = @{$hooks->{$hook}};
@@ -436,7 +437,6 @@
my $self = shift;
my ($hook, $code, $unshift) = @_;
- my $hooks = $self->{hooks};
if ($unshift) {
unshift @{$hooks->{$hook}}, $code;
}