Hallo,
bei non blocking GET in HttpUtils wird zwei mal ein InternalTimer für die Timeouts gesetzt, der jedoch nicht mehr entfernt wird. Wenn jemand mehrere Requests in schneller Folge absetzt, kann das dazu führen, dass der alte Timer einen folgenden Request abbricht.
Als Abhilfe hätte ich den angehängten Patch als Vorschlag. Ich bin mir leider nicht sicher, ob er nicht doch irgendwelche Seiteneffekte haben könnte.
Den Timer habe ich dabei auch so umgebaut, dass er nicht mehr auf $hash sondern auf "ConErr$hash->{Name}" hängt, um zu vermeiden, dass beim RemoveInternalTimer andere Timer des übergeordneten Moduls entfernt werden. Das wäre zum Beispiel beim HTTPMOD der Fall.
Was meint Ihr dazu?
Gruss
Stefan
Danke fuer den Hinweis und den Patch.
Ich habe es etwas abgeaendert (statt Namen einen lokalen Hash als Parameter verwendet), damit man fuer die gleiche FHEM-Instanz mehrere parallel laufende Aufrufe starten kann. Habs nur fuer ConnErr getestet, ein Testszenario fuer ReadErr aufzusetzen war mir zu aufwendig. Es waere schoen, wenn jemand das auch testen koennte.
Prima Sache, danke für den Patch! :)
So ganz passt es aber aktuell noch nicht. Seit heute erhalte ich diese Meldung:
2014.11.22 16:20:19 1: PERL WARNING: Odd number of elements in anonymous hash at FHEM/HttpUtils.pm line 228.
Ich vermute (ohne in das coding geschaut zu haben), dass da irgendwo {$bla} anstatt $bla steht und deshalb die Zuweisung einer Hashreferenz die Warnung auslöst.
betateilchen hat recht, ich habe wohl zu viel JavaScript gesehen in der letzten Zeit, und habe beim Test die Warnung uebersehen. Habs geaendert, getestet und eingecheckt.
Zitat von: rudolfkoenig am 23 November 2014, 12:01:57
ich habe wohl zu viel JavaScript gesehen
eine böse Krankheit, kaum heilbar...