This Question is Not Answered

1 "correct" answer available (10 pts) 2 "helpful" answers available (5 pts)
0 Replies Last post: Jul 14, 2008 1:02 PM by Robert Quattlebaum  
Robert Quattlebaum Bronze 6 posts since
Sep 7, 2006
Currently Being Moderated

Jul 14, 2008 1:02 PM

Openfire closes stream when client sends a <presence type="probe"/>

I know that it is somewhat undefined behavior of what a server is suppose to do when a client sends it a , but certainly closing the stream without so much as an ]]> message is somewhat excessive. From looking at the error logs, it would appear the stream closing is simply because it is a case which isn't handled:

 


2008.07.14 10:57:31 [org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:194)] Could not route packet
java.lang.NullPointerException
     at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:208)
     at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:179)
     at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:70)
     at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)
     at org.jivesoftware.openfire.net.StanzaHandler.processPresence(StanzaHandler.java: 329)
     at org.jivesoftware.openfire.net.ClientStanzaHandler.processPresence(ClientStanzaH andler.java:85)
     at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:253)
     at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:175)
     at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:133)
     at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)
     at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
     at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
     at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
     at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)
     at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
     at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
     at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
     at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)
     at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185)
     at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
     at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
     at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
     at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)
     at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 650)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
     at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
     at java.lang.Thread.run(Thread.java:613)

 

I would recommend simply dropping the presence packet stanza if it is not to be handled, as it is not technically out-of-spec enough to warrant killing the stream.

More Like This

  • Retrieving data ...