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,
);