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