Hanno,

    May I suggest you send these large patches to the list before
    committing them so we can do a group code and design review?

    In general, I don't think we want this change, as it adds
    complexity to the common core that we try and avoid.  The skip
    functionality can be implemented using the plugin wrapping
    functionality.

    Some of the "is_loaded" stuff may be commonly useful.

    I'd rather see a generalization (make it hookable, or just easily
    replacable) of the plugin dispatch loop instead of adding
    condition blocks for every feature we need in there.

    The advantage of a hooked plugin-dispatch over the wrapped
    (inherited) plugins is that you don't need to modify
    config/plugins as much.  

    I'm borderline on saying: "revert this and lets discuss it and
    decide if we want it".

    In general, any change that adds specific functionality to the
    core that could otherwise be implemented as a plugin -- especially
    if most users aren't ever going to use it -- shouldn't go in the
    core.

    Some random code comments below:

> --- branches/0.3x/config.sample/plugins       (original)
> +++ branches/0.3x/config.sample/plugins       Sun Dec 31 03:07:32 2006
> @@ -12,6 +12,9 @@
>  # from one IP!
>  hosts_allow
>  
> +# skip selected plugins for some hosts:
> +skip_plugins

This shouldn't be on by default in the basic simple configuration.

> --- branches/0.3x/lib/Qpsmtpd.pm      (original)
> +++ branches/0.3x/lib/Qpsmtpd.pm      Sun Dec 31 03:07:32 2006
> @@ -367,6 +367,11 @@
>        $@ and warn("FATAL LOGGING PLUGIN ERROR: ", $@) and next;
>      }
>      else {
> +      my $skip = $self->connection->notes('_skip_plugins');

Is this inside the loop intentionally?

> +sub escape_plugin {
> +    my $self        = shift;
> +    my $plugin_name = shift;
> +    # "stolen" from Qpsmtpd.pm

CODE DUPLICATION ALERT.  This code now exists in two places, which
makes it likely that if you change one place you'll break another.  

Reply via email to