From: Robert L. <ro...@le...> - 2004-03-22 22:08:10
|
At 08:34 AM 23/03/2004, Kragen Sitaker wrote: >On Tue, Mar 23, 2004 at 07:25:35AM +1100, Robert Leftwich wrote: > > and then uses the Python quopri.decode library function which > > does things a little differently, i.e. it uses the 'Q' encoding which is > > similar to "Quoted-Printable" but is different in significant areas, e.g. > > it may represent spaces as underscores, according to the RFC it is > based on. > >quopri.decode only decodes underscores as spaces if an optional third >argument is passed, at least in Python 2.2.2. Sorry, my bad - the first coffee had obviously not hit the system when reading the Python doco! >Are there other bugs? We might run into problems with Rule 4 of RFC 1521 which says "A line break in a text body, independent of what its representation is following the canonical representation of the data being encoded, must be represented by a (RFC 822) line break, which is a CRLF sequence...", but given the python server encodes \n it may not be an issue. Similarly it's possible, although a little unlikely, that long event values may cause problems with rule 5 which says "the Quoted-Printable encoding REQUIRES that encoded lines be no more than 76 characters long. If longer lines are to be encoded with the Quoted-Printable encoding, 'soft' line breaks must be used. An equal sign as the last character on a encoded line indicates such a non-significant ('soft') line break in the encoded text." The fact that the mps spec only uses the QP 'style', not the QP spec itself is a possible source of problems, so using a qp decode function is probably not ideal. Although, the likelihood of it causing any problems appears to be pretty low, as evidenced by the fact that no-one is reporting any actual problems! Do we keep the status quo and 'don't fix it if it ain't broke'? As far as the Java client goes, I'm going with the (rewritten) protocol version by making sure it decodes any '=XX' occurrences. All things going well I should have a useable release later today, but writing unit tests that cover all the edge cases is no small undertaking! Robert |