Dieses Blog laueft auf
Serendipity und wird nach
Soup repliziert. Vor einiger Zeit sind mir da ein paar Unstimmigkeiten aufgefallen, die ich mit
Esad am Freitag demystifiziert habe.
Soup schickt bei Fetchen der RSS Feeds einen
If-Modified-Since Header bei seinen HTTP Requests mit. Dieser hat aber nicht den Wert des
Last-Modified Headers den der Server beim letzten mal geschickt hat, sondern den Zeitpunkt des letzten Requests (nach der Uhr des Soup Servers). Damit gibt es eine Race Condition wenn die Uhren der Server nicht synchron laufen, die dazu fuehrt, dass Soup manchmal neue Messages nicht mitbekommt. Interessante Sidenote: Der
HTTP/1.1 Standard warnt explizit davor so vorzugehen.
Serendipity benutzt den
If-Modified-Since Header den Clients mitschicken auf eine sehr kreative Weise: naemlich nicht um bei nicht vorliegen neuer messages einen
304 Not Modified Status Code zu generieren, sondern um auszuwaehlen welche Messages eigentlich an den Client geschickt werden sollen. Sowas waere den Autoren des HTTP/1.1 Standards wohl nicht mal im Traum eingefallen - und wenn, dann haetten sie wohl nicht ernsthaft erwartet, dass jemand so was tun koennte.
Zwei mal falsches Verhalten ergibt leider kein korrekt arbeitendes System.
Esad hat mir zugesichert Soup auf standardkonformes Verhalten umzustellen. Ungeachtet dessen hab ich mein Serendipity jetzt mal gepatched: