From 823c187ae3619efdccda24355ad7c0faac216d6b Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Fri, 12 Sep 2014 09:03:55 +0000 Subject: [PATCH] FHEMWEB: plotfork ist not hardcoded, checks for the FORKABLE FWEXT hash entry git-svn-id: https://svn.fhem.de/fhem/trunk@6542 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 7 +++++-- fhem/FHEM/98_SVG.pm | 1 + fhem/fhem.pl | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index c0b597a51..e4f7b3b33 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -372,10 +372,14 @@ FW_Read($) $arg = "" if(!defined($arg)); Log3 $FW_wname, 4, "HTTP $name GET $arg"; + $FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem"); my $pid; if(AttrVal($FW_wname, "plotfork", undef)) { # Process SVG rendering as a parallel process - return if(($arg =~ m+/SVG_showLog+) && ($pid = fork)); + my $p = $data{FWEXT}; + if(grep { $p->{$_}{FORKABLE} && $arg =~ m+^$FW_ME$_+ } keys %{$p}) { + return if($pid = fork); + } } my $cacheable = FW_answerCall($arg); @@ -437,7 +441,6 @@ FW_answerCall($) $FW_RET = ""; $FW_RETTYPE = "text/html; charset=$FW_encoding"; - $FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem"); $FW_CSRF = ($defs{$FW_wname}{CSRFTOKEN} ? "&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : ""); diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index bfcc7abfd..0ef198bf2 100755 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -55,6 +55,7 @@ SVG_Initialize($) $hash->{FW_atPageEnd} = 1; $data{FWEXT}{"/SVG_WriteGplot"}{CONTENTFUNC} = "SVG_WriteGplot"; $data{FWEXT}{"/SVG_showLog"}{FUNC} = "SVG_showLog"; + $data{FWEXT}{"/SVG_showLog"}{FORKABLE} = 1; } ##################################### diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 5a2884585..9c13baae1 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -2344,8 +2344,8 @@ CommandSetstate($$) } else { - # The timestamp is not the correct one, but we do not store a timestamp for - # this reading. + # The timestamp is not the correct one, but we do not store a timestamp + # for this reading. my $tn = TimeNow(); $oldvalue{$sdev}{TIME} = $tn; $oldvalue{$sdev}{VAL} = ($init_done ? $d->{STATE} : $a[1]);