diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 81ffaa542..d5d9a22ca 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -128,6 +128,7 @@ FHEMWEB_Initialize($) JavaScripts SVGcache:1,0 addStateEvent + alarmTimeout allowedCommands allowfrom basicAuth @@ -246,7 +247,9 @@ FW_Read($) my $name = $hash->{NAME}; if($hash->{SERVERSOCKET}) { # Accept and create a child - TcpServer_Accept($hash, "FHEMWEB"); + my $nhash = TcpServer_Accept($hash, "FHEMWEB"); + my $wt = AttrVal($name, "alarmTimeout", undef); + $nhash->{ALARMTIMEOUT} = $wt if($wt); return; } diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 43d5e80f5..a151984b6 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -602,7 +602,9 @@ while (1) { } else { my $wb = $hash->{$wbName}; + alarm($hash->{ALARMTIMEOUT}) if($hash->{ALARMTIMEOUT}); my $ret = syswrite($hash->{CD}, $wb); + alarm(0) if($hash->{ALARMTIMEOUT}); if(!$ret || $ret < 0) { Log 4, "Write error to $p, deleting $hash->{NAME}"; TcpServer_Close($hash); @@ -2557,7 +2559,7 @@ SignalHandling() $SIG{'PIPE'} = 'IGNORE'; $SIG{'CHLD'} = 'IGNORE'; $SIG{'HUP'} = sub { CommandRereadCfg(undef, "") }; - + $SIG{'ALRM'} = sub { Log 1, "ALARM signal, blocking write?" }; } }