[7420] in testers

home help back first fref pref prev next nref lref last post

jwgc issues

daemon@ATHENA.MIT.EDU (Greg Hudson)
Wed Mar 22 16:14:48 2006

Date: Wed, 22 Mar 2006 16:14:21 -0500
Message-Id: <200603222114.k2MLELC5019287@egyptian-gods.mit.edu>
From: Greg Hudson <ghudson@MIT.EDU>
To: testers@MIT.EDU

Here are some notes on the jwgc issues noted so far:

1. [7415] jwgc display wrong presence for self

I couldn't reproduce the exact same failure here, but certainly could
produce *a* failure.  In my tests, the server never sent presence
pushes back to the client which sent the original presence change.
(Example: systest@mit.edu's roster contains "Both" subscriptions for
both ghudson@mit.edu and systest@mit.edu.  I send a presence change
from a client connected as systest, and the server sends a presence
update to ghudson@mit.edu, but not to the client which sent the
presence change.)  After several hours of investigation, I failed to
find either the server code which makes that decision or any clause in
RFC 3921 which would suggest that it is correct.  However, I did find
that Gaim has a function jabber_presence_fake_to_self which it uses
when you're changing your presence.  I assume jwgc needs to do
something similar.

jwgc also fails to update its internal roster representation when you
"jctl subscribe" to your own presence, for much the same reason.  I
did find the server code which makes that decision, though again, no
clause in RFC 3921 to suggest that it's correct.

2. [7415] "jctl show presence" doesn't work

I still need to look into this one more.  "jctl show" seems broken in
general.

3. [7416] Crash sending to "username"

As we all know and hate, Jabber's concept of a JID treats a bare word
as a domain, not as a node within some default domain.  So sending to
"jmorzins" is attempting to send to the domain "jmorzins", not the
user jmorzins@mit.edu, and produces an error.

The error element returned contains no cdata, which produces a crash
in notify.c which grabs the error's cdata (which evidently is NULL
when there is no cdata) and tries to set a variable to that.  Fixing
the crash naively is easy, but once the crash is fixed, the jwgc
variable error just gets set to "", which looks to jwgc.desc like no
error, so the user winds up seeing a message from "jmorzins" with the
same message body as the one sent, instead of an error dialog.

The correct fix is to interpret the <remote-server-not-found/> element
or whatever else it happens to be.  I think that means adding more
machinery to jwgc.

4. [7417] Authentication/connection failures handled poorly

I knew about this one, more or less.  I'll see if I can improve it to
do some of (a) recognize permanent connection errors and abort rather
than retrying, (b) display a diagnostic on errors, and (c) respond to
^C when in the retry state.

5. [7418] jwrite -q doesn't do anything

This patch looks good as-is, so I'll just take it.

home help back first fref pref prev next nref lref last post