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.

Fixed

Details

Assignee

Reporter

Labels

Components

Fix versions

Affects versions

Priority

Created April 22, 2014 at 10:32 PM
Updated April 25, 2014 at 4:29 PM
Resolved April 25, 2014 at 4:23 PM

Flag notifications