Patch for checks.c - embedded Perl plugins do not see custom macros as environment variables

Gerhard Lausser Gerhard.Lausser at consol.de
Fri Dec 19 19:45:41 CET 2008


Hi,

i wondered, why a plugin (which ran error-free through mini_epn) produced
ePN-errors. What i found out is, environment variables which are made from
custom macros are not visible by the embedded perl interpreter as they would
be if the plugin was started as a separate process.
I added a patch which adds set_all_macro_environment_vars(TRUE/FALSE); to
the code after use_epn=TRUE, but i'm not sure wether i put the function
calls to the right places. (At least at my test installation it's working)
Can you have a look at it?

Gerhard

--- nagios-3.0.6/base/checks.c  2008-11-30 18:22:58.000000000 +0100
+++ nagios-3.0.6-epn-and-custom-macros/base/checks.c    2008-12-19
19:27:05.000000000 +0100
@@ -539,6 +539,9 @@
                else
                 args[3]=processed_command+strlen(fname)+1;
 
+               /* set environment variables */
+               set_all_macro_environment_vars(TRUE);
+
                ENTER; 
                SAVETMPS;
                PUSHMARK(SP);
@@ -607,6 +610,9 @@
                 /* free check result memory */
                 free_check_result(&check_result_info);
 
+                /* unset environment variables */
+                set_all_macro_environment_vars(FALSE);
+
                 return;
                 }
                else{
@@ -615,6 +621,9 @@
 
                 log_debug_info(DEBUGL_CHECKS,1,"Embedded Perl successfully
compiled %s and returned code ref to plugin handler\n",fname);
 
+                /* unset environment variables */
+                set_all_macro_environment_vars(FALSE);
+
                 PUTBACK ;
                 FREETMPS ;
                 LEAVE ;



------------------------------------------------------------------------------




More information about the Developers mailing list