+- XPNEWS.TXT -----------------------------------------+ | | | ReadMe zum Betrieb des "Enhanced UUZ" | | mit dem Mail-/News-Client "XPNews" | | (c) 2003 FreeXP | | 30.08.2003 | +------------------------------------------------------+ Diese Datei enthält die Wiedergabe des Textes eines Postings vom 06.06.2003, das alle Detail- und Hintergrundinformationen zum Betrieb des "Enhanced UUZ" mit früheren Versionen des Mail-/News-Clients "XPNews" (bis v1.2.2) von Markus Kämmerer enthält. Diese Versionen von XPNews enthielten einen Bug, der in Korrelation mit einem Bugfix im "Enhanced UUZ" zu erheblichem Datenverlust beim Empfang von News-Batches geführt hätte. Der Text im untenstehenden Posting ist insofern nicht mehr auf einem aktuellen Stand, als daß kurz nach Erscheinen des "Enhanced UUZ" eine gefixte XPNews-Version veröffentlicht wurde. Die UUZ-Sonderversion für XPNews-User wird aus diesem Grund nicht mehr zum Download angeboten. XPNews-User, die noch eine Version 1.2.2 oder älter einsetzen, müssen daher *vor* Verwendung des "Enhanced UUZ" unbedingt auf XPNews v1.2.3 (Build 455) vom 06.06.2003 oder neuer updaten - ansonsten ist Daten- verlust garantiert! Eine gefixte XPNews-Version ist erhältlich unter: http://www.happyarts.de/ftp/xpnews/xpnews.zip Der untenstehende Text enthält mehrfach noch den Begriff "OpenXP/16". Inzwischen hat eine Umbenennung nach "FreeXP" stattgefunden. Düsseldorf, den 30. August 2003 ---------------------------------------------------------------------- Empfaenger : de.comm.software.crosspoint Empfaenger : crosspoint.openxp16.pub.allgemein Absender : my@openxp16.de (Michael Heydekamp) Software : CrossPoint [OpenXP/16] v3.40 RC3 (XMS) @ 1805032224 R/C816 Betreff : UUZ-Sonderversion fr XPNews-User (was: Announce OpenXP/16: Enhanced UUZ) Datum : Do 06.06.03, 00:00 ---------------------------------------------------------------------- Hi XP'ler, Michael Heydekamp <my@openxp16.de> wrote on 06.06.03: > XP-User, die den externen Client "XPNews" von Markus Kämmerer einsetzen, > müssen wegen eines Bugs in XPNews sowie eines damit unverträglichen UUZ- > Bugfixes desselben Autors, der in den "Enhanced UUZ" übernommen wurde, > eine einmalig erscheinende Sonderversion dieses UUZ verwenden - > ansonsten ist Datenverlust beim Empfang von News-Batches garantiert! > Bitte dazu die nächste Nachricht lesen, die sich direkt auf diesen > Announce bezieht. Damit ist fast alles gesagt - wen die technischen Hintergründe dazu interessieren, findet diese weiter unten. Die einmalig erscheinende Sonderversion des "Enhanced UUZ" für XPNews- User ist hier erhältlich: WWW: http://www.openxp16.de/download.php#uuz_download FTP: ftp://ftp.openxp16.de/openxp16/snapshot/uuze_xpn.zip HTTP: http://www.openxp16.net/ftp/openxp16/snapshot/uuze_xpn.zip Diese UUZ-Version *muß* zusammen mit XPNews eingesetzt werden, solange keine Version von XPNews verfügbar ist und eingesetzt wird, in der der den Datenverlust verursachende Bug (s.u.) behoben wurde. Technische Hintergründe: ------------------------ In News-Batches stellen externe Clients wie UKAW oder XPNews jedem Posting einen "rnews"-Header voran, der die Länge des Postings in Bytes enthält und der für den UUZ das Ende des einen und damit gleichzeitig den Anfang des nächsten Postings in diesem News-Batch kennzeichnet: ----------8<---------- | #! rnews 922 | Path: [...] ----------8<---------- Dieser Wert ist bei von XPNews erzeugten "rnews"-Headern nicht korrekt bzw. nicht RFC-konform, denn das Tückische ist, daß RFC1036 und seine inoffiziellen Nachfolger definiert haben, daß Zeilenenden (EOL) *immer* als 1 Byte zu zählen sind, auch wenn sie aus mehreren Bytes (so wie bei CRLF, CRCRLF o.ä.) bestehen sollten: ----------8<---------- News messages are combined into a script, separated by a header of the form: #! rnews 1234 where 1234 is the length of the message in bytes. Each such line is followed by a message containing the given number of bytes. (The newline at the end of each line of the message is counted as one byte, for purposes of this count, even if it is stored as <CARRIAGE RETURN><LINE FEED>.) ----------8<---------- Man kann dieser Bestimmung am sinnvollsten und einfachsten Rechnung tragen, indem man einfach auch nur aus 1 Byte bestehende Zeilenenden erzeugt (also reine CRs oder LFs) - dann nämlich stimmt der Wert im "rnews"-Header automatisch. Nach diesem Prinzip verfahren Clients wie UKA_PPP oder UKAW. XPNews hingegen erzeugt aber eben keine aus einzelnen CRs oder LFs bestehenden EOLs, sondern CRLF-Zeilenenden mit 2 Bytes. Das kann man tun, sofern man sicherstellt, daß man sie gemäß RFC1036 auch nur als 1 Byte zählt - aber eben das tut XPNews nicht, sondern es zählt ein CRLF als 2 Bytes und erzeugt so einen zu hohen Wert im "rnews"-Header. Und genau das führt bei der Konvertierung solcher News-Batches zum Datenverlust: Der UUZ liest aufgrund der fehlerhaften Längenangabe im "rnews"-Header über das Ende der Nachricht hinaus, befindet sich dann irgendwo mitten in der nächsten Nachricht und trifft deshalb dort jetzt nicht auf den eigentlich erwarteten "rnews"-Header am Beginn dieser nächsten Nachricht -> es paßt gar nichts mehr. Aber warum war das mit dem alten UUZ kein Problem? Gute Frage. :) Die Geschichte entbehrt nicht einer gewissen Ironie: Bisher enthielt der UUZ quasi genau denselben Bug wie XPNews, so daß sich diese beiden Bugs gegenseitig neutralisiert haben: Beide Programme haben CRLFs als 2 Bytes gezählt, alles war "gut". Anläßlich eines Bugreports eines Users, dessen empfangene News-Batches mit CRLF-Zeilenenden und RFC-konformer Längenangabe im "rnews"-Header nicht korrekt konvertiert wurden (es entstand Datenverlust) hat Markus selbst (!) dann im Mai 2002 die Ursache dafür durch genau den Bugfix im UUZ von OpenXP/32 beseitigt, den OpenXP/16 jetzt von dort übernommen hat: ----------8<---------- Revision 1.105 2002/05/24 06:54:52 mk - fixed handling of size parameter for messages ----------8<---------- Aufgrund dieses Bugfixes werden jetzt zwar News-Batches mit CRLF- Zeilenenden und korrekter Längenangabe im "rnews"-Header ohne Datenverluste konvertiert, dafür *entstehen* jetzt aber Datenverluste bei News-Batches mit CRLF-Zeilenenden und *nicht* korrekter Längenangabe im "rnews"-Header. Und eben solche erzeugt XPNews. IOW: XPNews ist bereits seit über einem Jahr zusammen mit OpenXP/32 nicht mehr einsetzbar, und zwar weil Markus (gleichzeitig Autor von XPNews) einen Bug im UUZ behoben hat und demzufolge der Bug in XPNews nicht mehr wie bisher neutralisiert wird. Aufgefallen ist das bisher wohl nur deshalb nicht, weil offenbar kein OpenXP/32-User XPNews einsetzt. Genau dieselbe Situation haben wir nach der Übernahme des Bugfixes nun logischerweise bei OpenXP/16. Deshalb erscheint diese einmalige Sonderversion des "Enhanced UUZ", in dem der Bugfix von Markus deaktiviert ist, damit XPNews-User trotzdem von den übrigen Vorteilen des Enhanced UUZ profitieren können, ohne von Datenverlusten betroffen zu sein. Sobald eine korrigierte Version von XPNews verfügbar ist, sollte jedoch umgehend auf diese upgedatet *und* dann auch auf den "offiziellen" Enhanced UUZ mit aktiviertem EOL-Fix gewechselt werden. Denn je nachdem, wie die Korrektur in XPNews aussehen wird, können dann mit *dieser* UUZ-Sonderversion für XPNews erneut Datenverluste entstehen: Sollte eine korrigierte XPNews-Version reine LF-Zeilenenden schreiben, bestünde diese Gefahr nicht. Schreibt sie aber nach wie vor CRLF- Zeilenenden - nur dann auch mit korrekter Längenangabe im "rnews"-Header - dann wäre erneuter Datenverlust bei Einsatz dieser UUZ-Sonderversion für XPNews vorprogrammiert. Wie die Korrektur von XPNews letztlich aussehen wird (und ob sie überhaupt erfolgt), entzieht sich meiner Kenntnis. Markus ist seit mehreren Monaten über diese Problematik informiert, die einzige Reaktion, die anstelle eines eigentlich zu erwartenden Bugfixes indirekt zu mir durchgedrungen ist, war, daß laut RFC822 das Schreiben von CRLF- Zeilenenden RFC-konform sei. Das ist korrekt, wird aber weder bestritten noch trifft es den Punkt. RFC822 gilt nur für Mail, hat daher gar nichts mit News-Batches zu tun und ist zudem nicht mehr aktuell (es wurde ersetzt durch den Nachfolger RFC2822). Jedenfalls gibt es bei Mails keinen "rnews"-Header mit Längenangabe, von daher besteht das Problem dort schon deshalb nicht. Insofern bin ich angesichts dieser völlig am Problem vorbeigehenden Reaktion nicht ganz sicher, ob es überhaupt verstanden wurde. Sie ist auch um so überraschender, als daß Markus beim Einbau des EOL-Fixes in den UUZ von OpenXP/32 im Mai 2002 die entsprechende Stelle aus einem der für News zutreffenden RFCs im Code als Kommentar sogar selbst zitiert hat und daher in Kenntnis dieser Problematik schon damals die fatalen Folgen für XPNews hätte absehen können oder sogar müssen. Warum überhaupt diese UUZ-Sonderversion für XPNews und die ausführliche Erläuterung der Hintergründe? Drei Gründe: 1. Zur reinen Information für alle Betroffenen (User und Programmierer von XPNews), auch damit hinterher keiner sagen kann, er habe nichts gewußt oder dies und jenes sei nicht klar oder ausführlich genug dargestellt worden. 2. Im Interesse der XPNews-User, die den Enhanced UUZ einsetzen möchten, ohne von unerwarteten Datenverlusten betroffen zu sein bzw. auf einen XPNews-Bugfix warten zu müssen. 3. Als vorbeugende Maßnahme gegen den möglichen absurden Verdacht, OpenXP/16 habe diese Änderung im UUZ vielleicht leichtfertig oder gar mit böser Absicht vorgenommen. Dem ist alleine durch den Umstand, daß Markus den EOL-Bugfix schon vor über einem Jahr in den UUZ von OpenXP/32 selbst eingebaut und OpenXP/16 ihn jetzt nur übernommen hat, zwar eigentlich bereits der Boden entzogen, aber wir möchten gerade solche Diskussionen schon im Vorfeld abfangen, da sich die XP- Gemeinde in der Vergangenheit bei Einführung neuer Software oft eher in solche Nebensächlichkeiten verbissen statt mit dem eigentlichen Thema beschäftigt hat. Es ist allerdings nicht geplant, permanent zwei UUZ-Versionen up-to-date zu halten, so daß dies voraussichtlich die erste und gleichzeitig letzte UUZ-Sonderversion für XPNews sein wird. Von daher wäre es schon schön, wenn der Bug in XPNews beizeiten gefixt würde, damit es bei zukünftigen Updates von OpenXP/16 nicht zu Problemen kommt. Michael