From 81740a90241b45fa55e43d59df19ebc0e4f21fe4 Mon Sep 17 00:00:00 2001 From: borisneubert Date: Thu, 13 Oct 2011 17:08:50 +0000 Subject: [PATCH] buxgfix: prevent fhem from stalling if telnet times out in 66_ECMD.pm git-svn-id: https://svn.fhem.de/fhem/trunk@1070 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/66_ECMD.pm | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 83c11011c..1cee5bcb1 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -10,6 +10,7 @@ - bugfix: FHEM2FHEM should work with CUL again, after syntax change - feature: CUL directio mode (No Device::SerialPort needed) - feature: FritzBox 7270 ZIP file + - buxgfix: prevent fhem from stalling if telnet times out in 66_ECMD.pm - 2011-07-08 (5.1) - feature: smallscreen optimizations for iPhone diff --git a/fhem/FHEM/66_ECMD.pm b/fhem/FHEM/66_ECMD.pm index d38f1b795..cee3004ab 100644 --- a/fhem/FHEM/66_ECMD.pm +++ b/fhem/FHEM/66_ECMD.pm @@ -149,7 +149,16 @@ ECMD_OpenDev($$) return; } - my $conn = IO::Socket::INET->new(PeerAddr => $devicename); + my $conn; + eval { + local $SIG{ALRM} = sub { die 'Timed Out'; }; + alarm 10; + $conn = IO::Socket::INET->new(PeerAddr => $devicename, timeout => 5); + }; + alarm 0; + $conn= undef if $@; +# return "Error: timeout." if ( $@ && $@ =~ /Timed Out/ ); +# return "Error: Eval corrupted: $@" if $@; if($conn) { delete($hash->{NEXT_OPEN})