diff --git a/src/conf.c b/src/conf.c index d1a0e57..de5295b 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1624,6 +1624,11 @@ static int h_plugin(int argc, unsigned char **argv){ return 0; } #endif +#ifdef WITH_TRANSPARENT + if(argc >= 3 && !strcmp((char *)argv[2], "transparent_plugin")){ + return 0; + } +#endif #ifdef NOPLUGINS return 999; #else diff --git a/tests/cases/transparent.py b/tests/cases/transparent.py index 0a729c7..7f7fcf9 100644 --- a/tests/cases/transparent.py +++ b/tests/cases/transparent.py @@ -68,6 +68,15 @@ def run(t): t.not_contains(_config(t, "notransparent", "log\ntransparent\nnotransparent"), "'notransparent'", "notransparent is accepted") + # A configuration written for the plugin still loads: the line that used + # to load it is accepted and does nothing, the way the ssl and pcre ones + # are, so an existing configuration does not have to be edited first. + out = _config(t, "plugin_line", + "log\nplugin /usr/local/lib/TransparentPlugin.ld.so transparent_plugin") + t.not_contains(out, "failed", "loading the old plugin is accepted and ignored") + t.contains(_config(t, "plugin_missing", "log\nplugin /nope/NoSuch.so nosuch_plugin"), + "failed", "an unknown plugin still fails to load") + # --- and the redirection itself ------------------------------------ if platform.system() != "Linux": # The BSDs need a redirection that leaves the original destination on