[pve-devel] applied: [PATCH manager 1/2] status/graphite: just use setsockopt to set timeouts
Thomas Lamprecht
t.lamprecht at proxmox.com
Thu Nov 7 19:10:06 CET 2019
after rethinking this it felt weird, sockets already can to this
themself, so I checked out the IO::Socket::Timeout module, and yeah,
it's just a OOP wrapper for this, hiding the "scary" struct pack.
So instead of adding that as dependency lets do it ourself.
Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
Cc: Martin Verges <martin.verges at croit.io>
---
PVE/Status/Graphite.pm | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/PVE/Status/Graphite.pm b/PVE/Status/Graphite.pm
index fdd4ff4c..8afadb53 100644
--- a/PVE/Status/Graphite.pm
+++ b/PVE/Status/Graphite.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
use IO::Socket::IP;
-use IO::Socket::Timeout;
+use Socket qw(SOL_SOCKET SO_SNDTIMEO SO_RCVTIMEO);
use PVE::Status::Plugin;
use PVE::JSONSchema;
@@ -105,9 +105,10 @@ sub write_graphite_hash {
) || die "couldn't create carbon socket [$host]:$port - $@\n";
if ( $proto eq 'tcp' ) {
- IO::Socket::Timeout->enable_timeouts_on($carbon_socket);
- $carbon_socket->read_timeout($timeout);
- $carbon_socket->write_timeout($timeout);
+ # seconds and µs
+ my $timeout_struct = pack( 'l!l!', $timeout, 0);
+ setsockopt($carbon_socket, SOL_SOCKET, SO_SNDTIMEO, $timeout_struct);
+ setsockopt($carbon_socket, SOL_SOCKET, SO_RCVTIMEO, $timeout_struct);
}
write_graphite($carbon_socket, $d, $ctime, $path.".$object");
--
2.20.1
More information about the pve-devel
mailing list