aboutsummaryrefslogtreecommitdiff
path: root/plugins/check_snmp.c
diff options
context:
space:
mode:
authorGravatar Sven Nierlein <Sven.Nierlein@consol.de> 2013-09-12 18:26:01 +0200
committerGravatar Sven Nierlein <sven@consol.de> 2013-09-12 23:39:32 +0200
commit4933146e00ccecc83144cb567520b963670028c3 (patch)
treef50a2b2ee89f3dcbcaeaf61a4f7e641606bae158 /plugins/check_snmp.c
parentc0926c2b1eddf25600c2dc1c7aff922eec98957d (diff)
downloadmonitoring-plugins-4933146e00ccecc83144cb567520b963670028c3.tar.gz
check_snmp: add timeout handler befor running snmpget
Diffstat (limited to 'plugins/check_snmp.c')
-rw-r--r--plugins/check_snmp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index 0bc810d1..52ad31ea 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -33,6 +33,7 @@ const char *copyright = "1999-2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
+#include "runcmd.h"
#include "utils.h"
#include "utils_cmd.h"
@@ -330,9 +331,18 @@ main (int argc, char **argv)
if (verbose)
printf ("%s\n", cl_hidden_auth);
+ /* Set signal handling and alarm */
+ if (signal (SIGALRM, runcmd_timeout_alarm_handler) == SIG_ERR) {
+ usage4 (_("Cannot catch SIGALRM"));
+ }
+ alarm(timeout_interval * retries + 5);
+
/* Run the command */
return_code = cmd_run_array (command_line, &chld_out, &chld_err, 0);
+ /* disable alarm again */
+ alarm(0);
+
/* Due to net-snmp sometimes showing stderr messages with poorly formed MIBs,
only return state unknown if return code is non zero or there is no stdout.
Do this way so that if there is stderr, will get added to output, which helps problem diagnosis