IQ type="result" getting java.lang.IllegalArgumentException
Description
Current development version hitting these two issues related to not routing IQ result stanzas
2014.04.22 16:49:46 org.jivesoftware.openfire.handler.IQHandler - Internal server error
java.lang.IllegalArgumentException: IQ must be of type 'set' or 'get'. Original IQ: <iq type="error" to="igniterealtime.org" id="429-29" from="raju@igniterealtime.org/c477b583"><ping xmlns="urn:xmpp:ping"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
at org.xmpp.packet.IQ.createResultIQ(IQ.java:384)
at org.jivesoftware.openfire.handler.IQPingHandler.handleIQ(IQPingHandler.java:58)
at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:65)
at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:375)
at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:122)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)
at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:330)
at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler.java:93)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:295)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:187)
at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:181)
at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:185)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:239)
at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:283)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.lang.Thread.run(Thread.java:744)
and
2014.04.22 08:45:52 org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Internal server error
java.lang.IllegalArgumentException: IQ must be of type 'set' or 'get'. Original IQ: <iq from="xxx@gmail.com/xxxx" to="room@conference.weather.im/Austin Smith Cedar Bluff" id="10" type="result"><vCard xmlns="vcard-temp"><FN>James Spann</FN><URL>https://plus.google.com/+JamesSpann</URL><PHOTO><TYPE>image/jpeg</TYPE><BINVAL>....2Q==</BINVAL></PHOTO></vCard></iq>
at org.xmpp.packet.IQ.createResultIQ(IQ.java:384)
at org.jivesoftware.openfire.muc.spi.LocalMUCUser.sendErrorPacket(LocalMUCUser.java:163)
at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:387)
at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:191)
at org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl.processPacket(MultiUserChatServiceImpl.java:308)
at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents.process(InternalComponentManager.java:587)
at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImpl.java:391)
at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:242)
at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:327)
at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:122)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)
at org.jivesoftware.openfire.net.SocketReader.processIQ(SocketReader.java:261)
at org.jivesoftware.openfire.net.ServerSocketReader.access$001(ServerSocketReader.java:60)
at org.jivesoftware.openfire.net.ServerSocketReader$1.run(ServerSocketReader.java:96)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Environment
None
Activity
Show:
Tom Evans April 25, 2014 at 4:23 PM
Updated affected IQ handlers to ignore error and result packets.
Florian Schmaus April 23, 2014 at 7:31 PM
From LocalMUCUser.process(IQ packet)
// Ignore IQs of type ERROR or RESULT sent to a room
if (IQ.Type.error == packet.getType()) {
return;
}
so the comment doesn't match the actual code. Which appears to would fix the problem.
IQPingHandler just seems to miss the IQ type check completely, i.e. there is no need to reply to an IQ not of type set or get.
Current development version hitting these two issues related to not routing IQ result stanzas
2014.04.22 16:49:46 org.jivesoftware.openfire.handler.IQHandler - Internal server error java.lang.IllegalArgumentException: IQ must be of type 'set' or 'get'. Original IQ: <iq type="error" to="igniterealtime.org" id="429-29" from="raju@igniterealtime.org/c477b583"><ping xmlns="urn:xmpp:ping"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq> at org.xmpp.packet.IQ.createResultIQ(IQ.java:384) at org.jivesoftware.openfire.handler.IQPingHandler.handleIQ(IQPingHandler.java:58) at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:65) at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:375) at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:122) at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76) at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:330) at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler.java:93) at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:295) at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:187) at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:181) at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648) at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648) at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:185) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648) at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:239) at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:283) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.lang.Thread.run(Thread.java:744)
and
2014.04.22 08:45:52 org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Internal server error java.lang.IllegalArgumentException: IQ must be of type 'set' or 'get'. Original IQ: <iq from="xxx@gmail.com/xxxx" to="room@conference.weather.im/Austin Smith Cedar Bluff" id="10" type="result"><vCard xmlns="vcard-temp"><FN>James Spann</FN><URL>https://plus.google.com/+JamesSpann</URL><PHOTO><TYPE>image/jpeg</TYPE><BINVAL>....2Q==</BINVAL></PHOTO></vCard></iq> at org.xmpp.packet.IQ.createResultIQ(IQ.java:384) at org.jivesoftware.openfire.muc.spi.LocalMUCUser.sendErrorPacket(LocalMUCUser.java:163) at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:387) at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:191) at org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl.processPacket(MultiUserChatServiceImpl.java:308) at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents.process(InternalComponentManager.java:587) at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImpl.java:391) at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:242) at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:327) at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:122) at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76) at org.jivesoftware.openfire.net.SocketReader.processIQ(SocketReader.java:261) at org.jivesoftware.openfire.net.ServerSocketReader.access$001(ServerSocketReader.java:60) at org.jivesoftware.openfire.net.ServerSocketReader$1.run(ServerSocketReader.java:96) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)