Cannot route to session until presence is available

Hi all,

I’m using Jabberwerx with Openfire and what I’m finding is that occassionally I run into situations where OF attempts to publish to a BOSH session very soon after the BOSH session is established but fails with the following error:

Unable to route packet. No session is available so store offline
I traced the OpenFire code a bit and found that in RoutingTableImpl.getRoutes(), an established session would not have a packet routed to it if the presence is not available.

Does anyone know if this is something specific to the way Openfire chose to implement this or do other XMPP servers behave similarly? I looked through XEP-0206: XMPP Over BOSH but I couldn’t find this behavior described in the initiation sequence, which leads me to believe that OpenFire may be doing something extra for some purpose.

Thanks,

Conrad

We have a similar same problem. We are trying to create a P2P-application using libjingle. We cannot open a session unless we set the presence to Online. The presence serves no purpose in our case so having to send presence info only hurts performance. Ejabberd doesn’t force us to do this so we are using that instead of Openfire at the moment. If you’d enable us to overcome this we’d change in a heartbeat.

We get the following errors in the logs when we try to initiate a session using Openfire:

2012.07.26 12:01:12 org.jivesoftware.openfire.spi.RoutingTableImpl - Unable to route packet. Packet should only be sent to available sessions and the route is not available.

2012.07.26 12:01:12 org.jivesoftware.openfire.spi.RoutingTableImpl - RoutingTableImpl: Failed to route packet to JID: libjingle.tester1@pc2/data packet:

You could use a plugin to send internally.

However if your user is performing authentication to login, the additional message is negligible unless it is triggering a get roster request.

Openfire handles messages for online and offline users differently

Ok, thanks for your quick reply! I will try that.