From df5d956d46fb8b65dd9b8d6fb6d670d7f61060d6 Mon Sep 17 00:00:00 2001 From: neubert 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: svn://svn.code.sf.net/p/fhem/code/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})