Can''t login to the server

Jive Messenger Server 1.0.6

Exodus 0.8.6.0

Jajc 0.0.6.98

Hi. I was playing with the roster of several users (adding new contacts, moving to categories, etc) and suddenly I cannot connect/login to the server with some users.

Below is an example of what I did and at the end of the post you can find the errors log.

. I have 3 user (gato1, gato2 and gato3)

. I logged in with gato2 and removed all the roster entries

. I logged in with gato3 and removed all the roster entries

. I logged in again with gato3 and added gato1 and gato2 to the roster (and they appeared with a question mark sign in Exodus)

. I logged in with gato2 and accepted the authorization request

. I logged in with gato3 and all the roster entries still appear with the question mark sign

. I logged in with gato2 again but didn’'t work

. I logged in with gato1 again but didn’'t work

. I can only log in with gato3

Using Jajc I get a socket error #10053 trying to login.

Errors that appear in jive.error.log:

2003.08.02 10:57 [com.jivesoftware.xmpp.spi.BasicChannel$ChannelWorker.run(BasicChannel.java:362)
] Internal server error
java.lang.NullPointerException
     at com.jivesoftware.xmpp.spi.PresenceManagerImpl.probePresence(PresenceManagerImpl.java:326)
     at com.jivesoftware.xmpp.handler.IQRosterHandler.manageRoster(IQRosterHandler.java:166)
     at com.jivesoftware.xmpp.handler.IQRosterHandler.handleIQ(IQRosterHandler.java:97)
     at com.jivesoftware.xmpp.spi.IQHandler.handleMessages(IQHandler.java:48)
     at com.jivesoftware.xmpp.spi.BasicChannel$ChannelWorker.run(BasicChannel.java:340)
2003.08.02 10:58 [com.jivesoftware.xmpp.spi.BasicChannel$ChannelWorker.run(BasicChannel.java:362)
] Internal server error
java.lang.NullPointerException
     at com.jivesoftware.xmpp.XMPPAddress.hashCode(XMPPAddress.java:332)
     at com.jivesoftware.xmpp.XMPPAddress.generateCachedJID(XMPPAddress.java:210)
     at com.jivesoftware.xmpp.XMPPAddress.getUserJID(XMPPAddress.java:247)
     at com.jivesoftware.xmpp.user.spi.DbRoster.getRosterItem(DbRoster.java:96)
     at com.jivesoftware.xmpp.handler.IQRosterHandler.updateItem(IQRosterHandler.java:238)
     at com.jivesoftware.xmpp.handler.IQRosterHandler.manageRoster(IQRosterHandler.java:178)
     at com.jivesoftware.xmpp.handler.IQRosterHandler.handleIQ(IQRosterHandler.java:97)
     at com.jivesoftware.xmpp.spi.IQHandler.handleMessages(IQHandler.java:48)
     at com.jivesoftware.xmpp.spi.BasicChannel$ChannelWorker.run(BasicChannel.java:340)

Regards,

– Gato

Hi,

Can you send me the XML from the sessions (paste it into the forum or attach them to your post)? Also, the scenario seems pretty complex so if you could try and find the simplest process that creates this behavior it would help a lot. it is also important to note in your description when you log out during the steps. I don’'t think the steps you outlined actually works for me.

Oh, and just for completeness, the jvm, os, and db you’'re using.

Thanks

-iain

Hey Iain,

JVM = 1.4.1_02

OS: XP

DB= embedded db (HSQL) / mysql

I could actually reproduce the problem in a few steps. I think that the problem is with Exodus and not with Messenger although Messenger could behave more defensive in situations like this.

Steps to reproduce the problem:

. Start Jive Messenger (fresh installation)

. Create several users (lets say gato1, gato2, gato4)

. Open Exodus 0.8.6.0

. Verify that you can login with the new users

. Now log in with gato4 (always using exodus)

. Add gato1 to the roster

. log out

. Log in with gato1

. A Subscription request dialog popus with nickname and group empty

. You can accept or deny (it’'s the same)

. log out

. try to login with gato1 and you can’'t

In Exodus’'s debug window I can see that when you try to login with gato1 (the first time) Exodus cannot parse the received XML.

RECV: <iq to="gato1@gato.home/Exodus" type="result" id="jcl_35" from="gato1@gato.home/Exodus">
    <query xmlns="jabber:iq:roster"/>
</iq><presence type="subscribe"/><iq to="gato1@gato.home/Exodus" type="result" id="jcl_36" from="gato1@gato.home/Exodus">
    <query xmlns="jabber:iq:private">
        <storage xmlns="storage:bookmarks"/>
    </query>
</iq><iq type="error" to="gato1@gato.home/Exodus" id="jcl_37" from="gato1@gato.home/Exodus">
    <error code="504">Server could not be reached</error>
</iq><iq to="gato1@gato.home/Exodus" type="result" id="jcl_38" from="gato1@gato.home/Exodus">
    <query xmlns="jabber:iq:private">
        <storage xmlns="storage:imprefs"/>
    </query>
</iq>
Unknown notify event: /presence/subscription

That’‘s probably why the Subscription request dialog is empty. I tried the same process with JAJC and there weren’'t any problems.

BTW, in the debug window I always see that whenever I try to login with any user I get the error code=“504”. Same behavior with exodus and JAJC. However, the application seems to work fine.

Regards,

– Gato

Hi Gato,

Could you check your config/jive_messenger.xml file for the property hostname and see if it matches the name your client’‘s use for the server name (’‘gato.home’’ from your example)? The 504 error should be a result of a routing error when trying to reach a host the server doesn’‘t think is ‘‘local’’. Since Messenger is standalone right now (no s2s connections) I’‘ve been very liberal with accepting packets and assuming they are for the local server. However, private storage is one area where I couldn’‘t be liberal so this is where the mismatch between what the server thinks is it’‘s name, and what a client thinks is the server’'s name will emerge.

You can also see this problem in the mismatch between what the client connects to in it’‘s opening tag, and what the server sends in it’'s opening tag.

As for the subscription problem, the subscription behavior is consistent and valid (a pending subscription request will be resent when the user logs in). So the main problem is why it won’'t let your gato1 user log back in later. I suspect the problem is the host name, and Exodus freaking on the iq:private error message (Exodus is very fragile with respect to iq:private behavior).

-iain

Hey Iain,

Sorry for the late reply. FYI, I replaced gato.home with localhost and the error 504 stopped but the login problem still exits. Since I stopped playing with the rosters I don’'t care anymore about this problem. Anyway, if you want we can pursue this problem…

Best regards,

– Gato

OK. Well, just let me know if you do run into it again.

-iain