[PATCH] - DevIo - Log der Fehlermeldung auch bei Non-Blocking TCP Connect

Begonnen von Markus Bloch, 22 Oktober 2016, 10:58:29

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo Rudi,

anbei ein kleiner Patch, damit auch bei einem Non-Blocking-Connect DevIo wie bisher eine Fehlermeldung mitsamt der Ursache in das FHEM-Log schreibt.

Wenn man aktuell in einem Modul einen Non-Blocking Connect via TCP durchführt und dieser fehlschlägt erscheint momentan nur eine Fehlermeldung ohne Ursache:

Can't connect to 192.168.179.2:1012:

Bei einem regulären Blocking-Connect steht dort auch die Ursache:

Can't connect to 192.168.179.2:1012: 192.168.179.2: No route to host

Der angehangene Patch korrigiert dies für Non-Blocking Connects, so dass die Ursache hier wieder im Log auftaucht. Ist mir beim Umstellen von FB_CALLMONITOR auf Non-Blocking Connect aufgefallen.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Hab dein Patch eingecheckt, da es offensichtlich nichts Schlimmes macht.
Warum es allerdings im Fehlerfall bisher eine leere Meldung kam, und durch den Patch das behoben sein soll, verstehe ich nicht.

Markus Bloch

#2
Weil bei einem Non-Blocking Connect die Variable $!, in der die Fehlermeldung normalerweise steht, in diesem Fall nicht gefüllt ist. Ich vermute aufgrund unterschiedlicher Geltungsberreiche von DevIo und HttpUtils.

Da es sich ja um Non-Blocking handelt, wird nach dem Aufruf von DevIo_Open mind 1x der Main-Loop durchlaufen. Sobald in diesem Durchlauf eine IO-Operation (lesen, prüfen, ...) erfolgreich durchgeführt wurde wird ja $! wieder zurückgesetzt. Daher kann man bei Non-Blocking nicht $! loggen, sondern muss die Fehlermeldung aus dem HttpUtils Callback loggen.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Ich habs jetzt: die zusaetzliche Abfrage verhindert die sinnlose Meldung, die neu eingefuegte Zeile generiert die Brauchbare.

Markus Bloch

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)