From 9f36182b7d4747966bcd98dbc5a6b31a1dd6feb3 Mon Sep 17 00:00:00 2001 From: Louis Rossouw Date: Sun, 21 Jun 2015 19:36:44 +0200 Subject: [PATCH 1/2] Add timeout on unix agent execution after connect. --- includes/polling/unix-agent.inc.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/includes/polling/unix-agent.inc.php b/includes/polling/unix-agent.inc.php index a1ea028bfb..fa2fb1c90d 100644 --- a/includes/polling/unix-agent.inc.php +++ b/includes/polling/unix-agent.inc.php @@ -12,13 +12,23 @@ if ($device['os_group'] == "unix") $agent_start = utime(); $agent = fsockopen($device['hostname'], $agent_port, $errno, $errstr, 10); + // Set stream timeout (for timeouts during agent fetch + stream_set_timeout($agent,10); + $agentinfo = stream_get_meta_data($agent); + if (!$agent) { echo "Connection to UNIX agent failed on port ".$port."."; } else { - while (!feof($agent)) + // fetch data while not eof and not timed-out + while ((!feof($agent)) && (!$agentinfo['timed_out'])) { $agent_raw .= fgets($agent, 128); + $agentinfo = stream_get_meta_data($agent); + } + if ($agentinfo['timed_out']) + { + echo "Connection to UNIX agent timed out during fetch on port ".$port."."; } } From 7cda1da63c4cdce5468b2b92109248ade4544807 Mon Sep 17 00:00:00 2001 From: Louis Rossouw Date: Sun, 21 Jun 2015 22:14:32 +0200 Subject: [PATCH 2/2] Add config settings for unix-agent time-outs. --- includes/defaults.inc.php | 5 +++++ includes/polling/unix-agent.inc.php | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index 8c02f3779d..1286a62c7b 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -621,4 +621,9 @@ $config['ipmi']['type'][] = "open"; // Options needed for dyn config - do NOT edit $dyn_config['email_backend'] = array('mail','sendmail','smtp'); $dyn_config['email_smtp_secure'] = array('', 'tls', 'ssl'); + +// Unix-agent poller module config settings +$config['unix-agent-connection-time-out'] = 10; //seconds +$config['unix-agent-read-time-out'] = 10; //seconds + ?> diff --git a/includes/polling/unix-agent.inc.php b/includes/polling/unix-agent.inc.php index fa2fb1c90d..5204a92f46 100644 --- a/includes/polling/unix-agent.inc.php +++ b/includes/polling/unix-agent.inc.php @@ -10,10 +10,10 @@ if ($device['os_group'] == "unix") $agent_port='6556'; $agent_start = utime(); - $agent = fsockopen($device['hostname'], $agent_port, $errno, $errstr, 10); + $agent = fsockopen($device['hostname'], $agent_port, $errno, $errstr, $config['unix-agent-connection-time-out'] ); // Set stream timeout (for timeouts during agent fetch - stream_set_timeout($agent,10); + stream_set_timeout($agent,$config['unix-agent-read-time-out']); $agentinfo = stream_get_meta_data($agent); if (!$agent)