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
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.
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
Ich habs jetzt: die zusaetzliche Abfrage verhindert die sinnlose Meldung, die neu eingefuegte Zeile generiert die Brauchbare.
Genau :) Das war der Plan.