Vereinzelte Benutzerprobleme

  • Der Server läuft aus meiner Sicht problemlos. (SSL habe ich wegen anderer Sachen noch nicht machen können.)
    Einige wenige Benutzer beklagen sich aber, dass der Server im ACP als offline angezeigt wird, obwohl er es zumindest meinerseits nicht ist und er kräftig direkt oder über WCF genutzt wird.
    Eine gepostete Fehlermeldung: "Missing required HTTP header…".
    Die 'Problemkinder' sind offensichtlich alle WCF 2.1-Nutzer.


    Hat jemand eine Idee, was das Problem sein könnte?

    • Offizieller Beitrag

    Hallo,


    kannst du die Nutzer bitten die vollständige Fehlermeldung raus zu suchen. Die sollte bei Hover erscheinen. Es gibt nämlich zwei HTTP-Header die durch das WCF 2.1 erwartet werden. Beide werden aber durch den Paketserver ausgeliefert:


    Code im WCF:
    https://github.com/WoltLab/WCF…tcher.class.php#L159-L164


    Code im Paketserver:
    https://github.com/wbbaddons/T…ob/master/app.coffee#L182
    https://github.com/wbbaddons/T…ob/master/app.coffee#L323


    Filtert dein Apache möglicherweise die Header (insb. den ETag-Header)?

    • Offizieller Beitrag

    Hallo,


    kann ich so erst einmal nicht nachvollziehen:

    HTTP
    [timwolla@~]curl -I update.zaydowicz.de                                 15:52:34
    HTTP/1.1 200 OK
    Date: Wed, 05 Aug 2015 13:52:49 GMT
    Server: Apache/2.4.10 (Debian)
    X-Powered-By: Express
    wcf-update-server-api: 2.0 2.1
    wcf-update-server-ssl: false
    Content-Type: application/xml; charset=utf-8
    ETag: W/"1438280945437"
    Content-Length: 82479


    @Josh Kannst du mal bitte hier ein file_put_contents(__DIR__.'/reply.txt', serialize($reply)); einfügen und mir dann den Inhalt der Datei zukommen lassen? Am besten einmal von einem betroffenen und einem nicht betroffenen Server.

    • Offizieller Beitrag

    Einmal von der Bastelstube:


    Code
    a:5:{s:10:"statusCode";s:3:"304";s:7:"headers";a:9:{s:25:"HTTP/1.1 304 Not Modified";s:25:"HTTP/1.1 304 Not Modified";s:6:"Server";s:5:"nginx";s:4:"Date";s:29:"Wed, 05 Aug 2015 15:10:37 GMT";s:10:"Connection";s:5:"close";s:21:"wcf-update-server-api";s:7:"2.0 2.1";s:21:"wcf-update-server-ssl";s:4:"true";s:4:"ETag";s:15:""1438783529340"";s:25:"Strict-Transport-Security";s:17:"max-age=31536000;";s:15:"X-Frame-Options";s:10:"SAMEORIGIN";}s:11:"httpHeaders";a:9:{s:25:"http/1.1 304 not modified";a:1:{i:0;s:25:"HTTP/1.1 304 Not Modified";}s:6:"server";a:1:{i:0;s:5:"nginx";}s:4:"date";a:1:{i:0;s:29:"Wed, 05 Aug 2015 15:10:37 GMT";}s:10:"connection";a:1:{i:0;s:5:"close";}s:21:"wcf-update-server-api";a:1:{i:0;s:7:"2.0 2.1";}s:21:"wcf-update-server-ssl";a:1:{i:0;s:4:"true";}s:4:"etag";a:1:{i:0;s:15:""1438783529340"";}s:25:"strict-transport-security";a:1:{i:0;s:17:"max-age=31536000;";}s:15:"x-frame-options";a:1:{i:0;s:10:"SAMEORIGIN";}}s:4:"body";s:0:"";s:3:"url";s:41:"https://packages.bastelstu.be/list/de.xml";}



    Einmal von @udoz:


    Code
    a:5:{s:10:"statusCode";s:3:"304";s:7:"headers";a:5:{s:25:"HTTP/1.1 304 Not Modified";s:25:"HTTP/1.1 304 Not Modified";s:4:"Date";s:29:"Wed, 05 Aug 2015 15:12:21 GMT";s:6:"Server";s:22:"Apache/2.4.10 (Debian)";s:10:"Connection";s:5:"close";s:4:"ETag";s:17:"W/"1438280945437"";}s:11:"httpHeaders";a:5:{s:25:"http/1.1 304 not modified";a:1:{i:0;s:25:"HTTP/1.1 304 Not Modified";}s:4:"date";a:1:{i:0;s:29:"Wed, 05 Aug 2015 15:12:21 GMT";}s:6:"server";a:1:{i:0;s:22:"Apache/2.4.10 (Debian)";}s:10:"connection";a:1:{i:0;s:5:"close";}s:4:"etag";a:1:{i:0;s:17:"W/"1438280945437"";}}s:4:"body";s:0:"";s:3:"url";s:38:"http://update.zaydowicz.de/list/de.xml";}


    Und einmal von WCFLabs:



    Dann will ich mal das WCF wieder zurück patchen, ich musste das leider via Update patchen, das wird ein Spaß das wieder zurück zu drehen… ^^

  • Beitrag von Max ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Beitrag basierte auf veralteten Informationen, siehe neuer Beitrag. ().
    • Offizieller Beitrag

    Hi,


    hierbei handelt es sich wohl um einen Bug im WCF und einen im Apache, laut dem aktuellen HTTP RFC ist es erlaubt, bei einem Status von 304 zusätzliche Header zu senden, der Apache entfernt hier jedoch scheinbar Header, die er nicht kennt. Vielleicht kann man ihn ja anweisen, das zu unterlassen, musst du mal ein wenig recherchieren. :)


    Als Hotfix könntest du testen, die Option deterministic des Paketservers auf true zu setzen.

    • Offizieller Beitrag

    Hallo,


    um den Beitrag von @Max etwas auszuführen: Der Apache hat sich bis Juni letzten Jahres korrekt Verhalten (RFC 2616). Die aktuelle Version von HTTP (RFC 7232) sagt an der Stelle etwas genau gegensätzliches. Im Umkehrschluss hat node.js, express (das Framework, was der Server nutzt) und der nginx vorher etwas falsches gemacht, was jetzt aber erlaubt ist.


    Früher mussten alle „Entity-Header“ aus der Antwort gestrichen werden, wenn es ein Weak-ETag war, damit es keine Differenzen gibt. Jetzt ist die gecachte Antwort mit den Informationen aus dem 304 Not Modified zu aktualisieren (und genau das macht das WCF). Entity-Header sollen aber trotzdem nicht gesendet werden (wenn möglich).

  • Udoz hat es gefixed,

    Naja, gefixed ist übertrieben. Ich habe nur gemacht, was Max oben vorgeschlagen hat.


    Wrid grün angezeigt aber 0 Pakete vorhanden.


    (auch nach cache löschen, paketserver neueingetragen, neu gesucht, sogar cronjob mauell gestartet)

    Funktioniert offensichtlich nun auch unter WCF 2.1 (siehe Testumgebung). Server löschen, Cache löschen, Server neu eintragen, Cronjob Aktualisiert Paket-Informationen und er ist grün und zeigt die Anzahl der vorhandenen Pakete an.
    Mal sehen, wie es sich entwickelt...

  • unktioniert offensichtlich nun auch unter WCF 2.1 (siehe Testumgebung). Server löschen, Cache löschen, Server neu eintragen, Cronjob Aktualisiert Paket-Informationen und er ist grün und zeigt die Anzahl der vorhandenen Pakete an.
    Mal sehen, wie es sich entwickelt...


    Ok aber im Live forum jedenfalls nicht :D
    gut das ich deinen zweiten noch drin habe :D

    • Offizieller Beitrag

    Hallo,

    Mal sehen, wie es sich entwickelt...

    auch nicht besser. Es wird beim zweiten Versuch wieder knallen:



    Edit: Du kannst probieren einen Bug-Report im WCF einzureichen. Das wird grundsätzlich die neue API hinter einem Apache betreffen (egal ob PHP oder node.js). nginx ist nicht betroffen. Das WCF arbeitet aber nach RFC 7232 RFC-konform.


    Edit 2: Alternativ kommentierst du im Paketserver folgende Zeilen aus: https://github.com/wbbaddons/T…ster/app.coffee#L180-L183. Danach arbeitet dieser nur mit der WCF 2.0-API, welche ineffizienter ist.

  • Toll :)


    Du kannst probieren einen Bug-Report im WCF einzureichen.

    Dazu müsste ich mich umfangreicher einlesen, wozu mir Zeit und Lust fehlen.

    Alternativ kommentierst du im Paketserver folgende Zeilen aus: github.com/wbbaddons/Tims-Pack…ster/app.coffee#L180-L183. Danach arbeitet dieser nur mit der WCF 2.0-API, welche ineffizienter ist.

    Das hingegen werde ich noch versuchen
    .