http://www.perlmonks.org?node_id=144917

After the move to the new servers, I discovered a curious bug in the Chatterbox XML ticker. It is randomly either encoding or not encoding ampersands, angle brackets, and square brackets. This inconsistent encoding causes confusion in the Chatterbox clients. In the Tk client, it breaks the caching of messages, causing the same messages to be printed over and over again.

To verify that the problem is with the ticker and not the client, I viewed the source of the ticker in lynx (lynx -source 'http://www.perlmonks.org/index.pl?node=chatterbox+xml+ticker'). Here are two examples that demonstrate the problem. Only the relevant message is shown in each example.

<CHATTER><INFO site="http://perlmonks.org" sitename="Perl Monks">Rende +red by the Chatterbox XML Ticker</INFO> <message user_id="43546" author="chipmunk" time="2002020815340 +7"> test &amp;nbsp;</message> </CHATTER> <CHATTER><INFO site="http://perlmonks.org" sitename="Perl Monks">Rende +red by the Chatterbox XML Ticker</INFO> <message user_id="43546" author="chipmunk" time="2002020815340 +7"> test &nbsp;</message> </CHATTER>
<CHATTER><INFO site="http://perlmonks.org" sitename="Perl Monks">Rende +red by the Chatterbox XML Ticker</INFO> <message user_id="43546" author="chipmunk" time="2002021212120 +5"> test 0 &lt; 1</message> </CHATTER> <CHATTER><INFO site="http://perlmonks.org" sitename="Perl Monks">Rende +red by the Chatterbox XML Ticker</INFO> <message user_id="43546" author="chipmunk" time="2002021212120 +5"> test 0 < 1</message> </CHATTER>
It would be a great help to all the users of chatterbox clients to get this bug fixed. Unfortunately, there's no reliable way to work around it.

Replies are listed 'Best First'.
Re: Chatterbox XML Ticker broken
by mirod (Canon) on Feb 12, 2002 at 19:09 UTC

    An old trick I used when fixing crappy SGML data: s{<(\W)}{&lt;$1}g;

    Now that I think of it you can also use lookahead to get elegance points: s{<(?=\W)}{&lt;}g; (untested), which should also get you correcteness points as it also works for << too, contrary to my first attempt.