FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: StefanStrobel am 20 November 2014, 21:08:22

Titel: HttpUtils timeout timer
Beitrag von: StefanStrobel am 20 November 2014, 21:08:22
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
Titel: Antw:HttpUtils timeout timer
Beitrag von: rudolfkoenig am 21 November 2014, 10:30:31
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.
Titel: Antw:HttpUtils timeout timer
Beitrag von: Loredo am 22 November 2014, 16:23:54
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.
Titel: Antw:HttpUtils timeout timer
Beitrag von: betateilchen am 22 November 2014, 16:43:50
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.
Titel: Antw:HttpUtils timeout timer
Beitrag von: rudolfkoenig am 23 November 2014, 12:01:57
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.
Titel: Antw:HttpUtils timeout timer
Beitrag von: betateilchen am 23 November 2014, 13:25:55
Zitat von: rudolfkoenig am 23 November 2014, 12:01:57
ich habe wohl zu viel JavaScript gesehen

eine böse Krankheit, kaum heilbar...