Autor Thema: [PATCH] - HttpUtils - Rückgabe des Status-Codes in $param, senden in HTTP/1.1  (Gelesen 6347 mal)

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3682
Hallo Rudi,

anbei findest du einen sehr kleinen Patch für HttpUtils.pm:

  • Rückgabe des HTTP-Statuscodes der Antwort im Parameter-Hash unter $param->{code} zur weiteren Auswertung
  • Senden aller Requests mit HTTP/1.1 in der Request-Line

Der erste Punkt dient der Auswertung des Statuscodes in Fällen ungleich 200 (also 401,403,404, ...). LG-TV's geben die Rückmeldung der Anfrage nur in Form von HTTP Statuscodes ohne weiteren Content an ("Content-Length: 0", siehe Diskussion mit betateilchen bei meinem letzten Fragethread).

Der zweite Punkt schmerzt dir, dass weis ich. Leider antwortet mir in meinem Fall mein LGTV erst dann, wenn HTTP/1.1 in der Request-Line steht. Bei HTTP/1.0 beendet der Server (LGTV) sofort die Verbindung. Da es im Internet mittlerweile defacto Standard ist, sehe ich persönlich hier keine Probleme HTTP/1.1 zu verwenden. Alle Module in meiner FHEM Installation die HttpUtils.pm verwenden funktionieren nachwievor ohne Probleme mit HTTP/1.1 (Weather, Twilight, YAMAHA_*)

Währe toll, wenn das eingecheckt werden könnte.

Vielen Dank

Gruß
Markus
« Letzte Änderung: 01 Juni 2014, 10:46:49 von 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)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Hallo Markus,

du hast recht, ueber den HTTP/1.1 bin ich nicht gluecklich, da ich nicht sicher bin, welche Seiteneffekte es hat. Weiterhin bin ich nicht ganz sicher, welche Header-Felder bei 1.1 spezifiziert werden muessen, aus dem RFC werde ich nicht ganz schlau. Ich habe aber beschlossen, dass wir dies durch die fleissigen FHEM-Tester rausfinden werden, insofern habe ich beide Aenderungen eingecheckt. Falls jemandem was auffaellt, bitte hier melden.

Gruss,
  Rudi

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3682
Vielen Dank.

Eine wesentliche Neuerung in HTTP/1.1 ist die Möglichkeit eine TCP Verbindung offen zuhalten um mehrere HTTP-Requests abzusetzen (Header-Feld: Keep-Alive). Daher würde ich vorschlagen die Zeile

Connection: Close
Generell mit aufzunehmen, da HttpUtils.pm aktuell nicht im Stande ist, eine TCP Verbindung offen zu halten für weitere Requests.

Alle HTTP Module bei mir funktionieren aber auch ohne dieser Zeile mit HTTP/1.1

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)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17480
  • s/fhem\.cfg/configDB/g
du hast recht, ueber den HTTP/1.1 bin ich nicht gluecklich, da ich nicht sicher bin, welche Seiteneffekte es hat.
...
Falls jemandem was auffaellt, bitte hier melden.

*meld*

Mit dem geänderten Modul HttpUtils funktionieren die Kalender in 57_Calender wieder mal nicht mehr.

(Ja ich habe ausführlich getestet, es ist das aktualisierte Modul HttpUtils.pm, nicht das zeitgleich geänderte 57_Calendar.pm)

Und ich bin nicht der einzige mit dem Problem:

http://forum.fhem.de/index.php/topic,24090.msg173619.html#msg173619
« Letzte Änderung: 02 Juni 2014, 19:11:34 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17480
  • s/fhem\.cfg/configDB/g
Daher würde ich vorschlagen die Zeile
Connection: CloseGenerell mit aufzunehmen,
Alle HTTP Module bei mir funktionieren aber auch ohne dieser Zeile mit HTTP/1.1

"Wir befinden uns im Jahre 2014 n.Chr. Ganz fhem ist von HttpUtils.pm besetzt... Ganz fhem? Nein! Ein von unbeugsamen Entwicklern gebautes Modul hört nicht auf, dem Eindringling Widerstand zu leisten."

Wenn man die von Markus vorgeschlagene zusätzliche Header-Zeile mit in die HttpUtils aufnimmt, funktioniert auch das Calendar-Modul wieder korrekt.

Index: HttpUtils.pm
===================================================================
--- HttpUtils.pm (revision 6033)
+++ HttpUtils.pm (working copy)
@@ -190,6 +190,7 @@
 
   my $hdr = "$method $hash->{path} HTTP/1.1\r\n";
   $hdr .= "Host: $hash->{host}\r\n";
+  $hdr .= "Connection: Close\r\n";
   $hdr .= "Authorization: Basic $hash->{auth}\r\n" if(defined($hash->{auth}));
   $hdr .= $hash->{header}."\r\n" if(defined($hash->{header}));
   if(defined($data)) {
« Letzte Änderung: 02 Juni 2014, 20:46:57 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Eingecheckt.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17480
  • s/fhem\.cfg/configDB/g
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3753
  • ~ Challenging Innovation ~
Hi,


nach dem Update scheint etwas nicht mehr so ganz in Ordnung zu sein, so dass das ENIGMA2 Modul nicht mehr funktioniert.


2014.06.04 13:06:14 5: ENIGMA2 LR_SAT: RES ERROR powerstate - not in XML format
6a
<?xml version="1.0" encoding="UTF-8"?>
<e2powerstate>
   <e2instandby>
false   </e2instandby>
</e2powerstate>


0






Irgendwie mogelt sich da also am Anfang ein "6a" und am Ende eine "0" dazu.
Hier ist die Codestelle, an die HtmlUtils die $data Variable übergibt:
http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/70_ENIGMA2.pm#l937


Ich sehe keinen Zusammenhang zu meinem Code. Weiß jemand, was in HttpUtils falsch läuft?




Gruß
Julian
« Letzte Änderung: 04 Juni 2014, 13:20:26 von Loredo »
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Zitat
nach dem Update

Update von heute?

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3753
  • ~ Challenging Innovation ~
Update von heute?


Update heute durchgeführt, somit die Änderungen von gestern in HttpUtils eingeschlossen.
Das Problem besteht aber wohl bereits seit 2.6. (sprich dem Checkin 01.06.14 13:50).
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Und falls Du HTTP/1.1 wieder in HTTP/1.0 aenderst?

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3753
  • ~ Challenging Innovation ~
Dann geht es wieder und die Rückmeldung sieht so aus:


2014.06.04 17:22:45 5: ENIGMA2 LR_SAT: RES powerstate
<?xml version="1.0" encoding="UTF-8"?>
<e2powerstate>
<e2instandby>
false </e2instandby>
</e2powerstate>


Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3682
Könntest du evtl. mal einen PCAP in Wireshark mit HTTP/1.1 machen und mir oder dem Thread zur Verfügung stellen?

Vielen Dank

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)

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3753
  • ~ Challenging Innovation ~
Na klar ;-)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Da scheinbar manche Benutzer Probleme mit HTTP/1.1 haben (selbst mit Connection:Close), habe ich die Voreinstellung wieder auf 1.0 gesetzt. Man (d.h. der Modulautor) kann sie mit $hash->{httpversion}="1.1" selbst bestimmen, in diesem Fall wird auch automatisch "Connection: Close" zum Header hinzugefuegt.

Auf ein Neues beim testen.

 

decade-submarginal