FHEMWEB: Sporadisch fehlende SVG-Plots mit plotfork

Begonnen von Flachzange, 06 September 2026, 11:57:33

Vorheriges Thema - Nächstes Thema

noansi

Hallo Rudolf,

danke!

Zitatich verstehe es aber noch nicht, wieso es crash-sicherer ist.
Weil perl nach meiner Erfahrung das 'if' in dem Konstrukt auch auf das 'my' bezieht und wenn die Bedingung nicht erfüllt ist, dann sind die 3 Variablen auch nicht deklariert, mit den damit verbunden Folgen.

In der Regel wird diese spezielle Bedingung erfüllt sein, sofern normale Header kommen. Deswegen fällt es bisher auch nicht auf.

Solche Konstrukte musstest Du auch schon an anderer Stelle korrigieren.
my ($method, $arg, $httpvers);
  ($method, $arg, $httpvers) = split(" ", $FW_httpheader[0], 3)
        if($FW_httpheader[0]);
  $method = "" if(!$method);
wäre die alternative Methode.

Gruß, Ansgar.

rudolfkoenig

ZitatWeil perl nach meiner Erfahrung das 'if' in dem Konstrukt auch auf das 'my' bezieht und wenn die Bedingung nicht erfüllt ist, dann sind die 3 Variablen auch nicht deklariert, mit den damit verbunden Folgen.
Das habe ich auch mal so im Kopf gehabt, aber nach einen kleinen Test sehe ich keinen Unterschied: in beiden Faellen kriege ich beim Verwenden "Use of uninitialized value".
Aber egal: deine Variante ist schoener, deswegen habe ich es auch uebernommen.

Sidey

Ich habe auch etwas gegrübelt, da split ja automatisch undef zuweist wenn es keine Elemente mehr gibt.
Das if verhindert, dann das Erzeugen der Variable.

Das If braucht man aber überhaupt nicht, weil einfach $FW_httpheader auf '' gesetzt werden kann, wenn es nicht definiert ist und $arg sowie $httpvers dann undef erhalten. Zumal es nicht exakt korrekt ist auf if ($FW_httpheader) zu prüfen. Das klappt nur, weil es keine Methode "0" gibt.


my ($method, $arg, $httpvers) = split(' ', $FW_httpheader[0] // '', 3);

Mir ist aber kein HTTP Aufruf bekannt, der ohne Mehtode funktioniert. Also alles nur Therorie.

Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

Roger

Moin,
vielen Dank für die Änderungen. Ich hatte auch ab und zu mal fehlende SVG-Plots (wenn viele Grafiken auf einer Seite waren). Das scheint nun weg zu sein.

//Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron