KISS
I'm being plagued by mysterious crashes of Gossip, my currently favourite Jabber client. Somehow, everytime I have used its groupchat stuff, the client becomes unstable. So far, I haven't been able to track it down, unfortunately. The fact that Gossip's main authors, Micke and Richard don't really use groupchat, doesn't help in getting this fixed, either.
Today, however, I remembered that nifty little tool called sjabber, a console groupchat-only Jabber client, written by qmacro. I was curious if it would still run, since this software hadn't been touched since 2001. Would it still adhere to Net::Jabber's API? Would it work with Multi-User Chat conference components? Almost a resounding yes!
Yes, sjabber still runs, even with the latest
Net:Jabber. It works with the
conferencing component at conference.ik.nu. However, it
didn't fully work with the one on conference.jabber.fosdem.org. The
difference? The former runs the old conference-v2 module, wheras the latter
runs mu-conference. The
mu-conference component
implements the new Multi-User Chat protocol, and is a bit stricter on
what it accepts. It turns out that sjabber wasn't
setting the type attribute to
groupchat
on its outgoing messages and all messages
from it were dropped at the component. Incoming messages, as well as
presence was handled fine.
This was simple to fix, and now sjabber is
working great. Its author, qmacro, was pretty amazed that his
first foray into Jabber programming
is still humming
along nicely. For completeness, here's the fix:
--- sjabber.orig Wed Mar 28 11:04:39 2001
+++ sjabber Thu Feb 24 10:07:52 2005
@@ -130,7 +130,7 @@
elsif (length($input) and $config{currentgroup}) {
my $gc_msg = Net::Jabber::Message->new();
$gc_msg->SetMessage(
-# Type => 'headline', # why did I do this?
+ Type => 'groupchat',
To => groupName($config{currentgroup}).'@'.groupServer($config{currentgroup}),
Body => $input,
);