[JDEV] Component failing to push new roster information to client

Mike Prince mike at mikeprince.com
Wed Nov 27 20:31:17 CST 2002


I'm getting a 503 (Service unavailable) when I try to push a new roster
to a client that's online and available.  In short I'd like to "force"
new users onto a client.

Why am I getting this error?

Here's the low-down...

1) Running JabberD 1.4.2 on XP (argh)
2) Java Component connects up, handshakes, and successfully issues

<xdb from="realtime" to="exodus at localhost" id="1" type="set"
ns="jabber:iq:roster">
<query xmlns="jabber:iq:roster">
	<item jid="woman at localhost" subscription="both" name="woman">
		<group>group</group>
	</item>
	<item jid="carol at localhost" subscription="both" name="carol">
		<group>group</group>
	</item>
	<item jid="man at localhost" subscription="both" name="Mann">
		<group>Snowsports</group>
	</item>
</query>
</xdb>

3) I then try to push the roster to the client (yes, it's connected and
available)

<iq from="realtime" to="exodus at localhost" id="2" type="set">
	<query xmlns="jabber:iq:roster">
		<item jid="woman at localhost" subscription="both"
name="woman">
			<group>group</group>
		</item>
		<item jid="carol at localhost" subscription="both"
name="carol">
			<group>group</group>
		</item>
		<item jid="man at localhost" subscription="both"
name="Mann">
			<group>Snowsports</group>
		</item>
	</query>
</iq>

4) Which generates this error

<iq from='exodus at localhost' to='realtime' id='2' type='error'>
	<query xmlns='jabber:iq:roster'>
		<item jid='woman at localhost' subscription='both'
name='woman'>
			<group>group</group>
		</item>
		<item jid='carol at localhost' subscription='both'
name='carol'>
			<group>group</group>
		</item>
		<item jid='man at localhost' subscription='both'
name='Mann'>
			<group>Snowsports</group>
		</item>
	</query>
	<error code='503'>Service Unavailable</error>
</iq>

5) From JabberD, the debug shows...

Wed Nov 27 18:08:51 2002  modules.c:135 mapi_call 1
Wed Nov 27 18:08:51 2002  modules.c:158 MAPI A08CF68
Wed Nov 27 18:08:51 2002  modules.c:158 MAPI A08CFF8
Wed Nov 27 18:08:51 2002  modules.c:158 MAPI A08D1C8
Wed Nov 27 18:08:51 2002  modules.c:158 MAPI A08D960
Wed Nov 27 18:08:51 2002  modules.c:175 mapi_call returning unhandled
Wed Nov 27 18:08:51 2002  deliver.c:257
deliver(to[realtime],from[exodus at localho
st],type[4],packet[<iq from='exodus at localhost' to='realtime' id='2'
type='error'
><query xmlns='jabber:iq:roster'><item jid='woman at localhost'
subscription='both'
 name='woman'><group>group</group></item><item jid='carol at localhost'
subscriptio
n='both' name='carol'><group>group</group></item><item
jid='man at localhost' subsc
ription='both'
name='Mann'><group>Snowsports</group></item></query><error code='
503'>Service Unavailable</error></iq>])
Wed Nov 27 18:08:51 2002  deliver.c:474 DELIVER 1:realtime <iq
from='exodus at loca
lhost' to='realtime' id='2' type='error'><query
xmlns='jabber:iq:roster'><item j
id='woman at localhost' subscription='both'
name='woman'><group>group</group></item
><item jid='carol at localhost' subscription='both'
name='carol'><group>group</grou
p></item><item jid='man at localhost' subscription='both'
name='Mann'><group>Snowsp
orts</group></item></query><error code='503'>Service
Unavailable</error></iq>
Wed Nov 27 18:08:51 2002  deliver.c:678 delivering to instance
'realtime'
Wed Nov 27 18:08:51 2002  mio.c:1054 mio_write called on x: A199E60
buffer: (nul
l)
Wed Nov 27 18:08:51 2002  mtq A0DF658 leaving to pth
Wed Nov 27 18:08:51 2002  mio.c:607 mio while loop top
Wed Nov 27 18:08:51 2002  mio.c:620 mio while loop, working
Wed Nov 27 18:08:51 2002  mio.c:279 write_dump writing data: <iq
from='exodus at lo
calhost' to='realtime' id='2' type='error'><query
xmlns='jabber:iq:roster'><item
 jid='woman at localhost' subscription='both'
name='woman'><group>group</group></it
em><item jid='carol at localhost' subscription='both'
name='carol'><group>group</gr
oup></item><item jid='man at localhost' subscription='both'
name='Mann'><group>Snow
sports</group></item></query><error code='503'>Service
Unavailable</error></iq>
Wed Nov 27 18:08:51 2002  mio.c:607 mio while loop top
Wed Nov 27 18:09:06 2002  jabberd.c:255 main load check of 1.00 with 14
total th
reads
Wed Nov 27 18:09:45 2002  mio.c:620 mio while loop, working
Wed Nov 27 18:09:45 2002  mio.c:760 MIO read from socket 16:
Wed Nov 27 18:09:45 2002  mio.c:607 mio while loop top
Wed Nov 27 18:09:46 2002  users.c:88 checking users for host localhost
Wed Nov 27 18:09:46 2002  usercount 1   total users
Wed Nov 27 18:10:06 2002  jabberd.c:255 main load check of 1.00 with 14
total th




Sooooo.... Am I even doing this the right way?  Is there a better way?
How should I signal to the client that the roster should change?

Thanks much,

Mike






More information about the JDev mailing list