All work
- Ignore unexpected 'subscription' values in Roster SetOF-3062Guus der Kinderen
- Improve DB query to get last pubsub itemsOF-3061Guus der Kinderen
- Add support for muc#roominfo_webchat_urlOF-3060Guus der Kinderen
- Deprecate concept of 'anonymous route'OF-3059Resolved issue: OF-3059Guus der Kinderen
- DirectedPresence should implement CacheableOF-3058Resolved issue: OF-3058Guus der Kinderen
- DirectedPresence should have a toStringOF-3057Resolved issue: OF-3057Guus der Kinderen
- Reduce reliance on RoutingTable when processing directed presenceOF-3056Resolved issue: OF-3056Guus der Kinderen
- When removing XML elements, don't expect there to be only one.OF-3055Resolved issue: OF-3055Guus der Kinderen
- HybridUserProvider throws IndexOutOfBoundsExceptionOF-3054Resolved issue: OF-3054Guus der Kinderen
- Add support for XEP-0433: Extended Channel SearchOF-3053Resolved issue: OF-3053Guus der Kinderen
- Consistently use pagination for ad-hoc commandsOF-3052Resolved issue: OF-3052Guus der Kinderen
- Update to Tinder 2.1.0OF-3051Resolved issue: OF-3051Guus der Kinderen
- Client session sorting on last activity issueOF-3050Resolved issue: OF-3050Guus der Kinderen
- Session overview page error in clusterOF-3049Resolved issue: OF-3049Guus der Kinderen
- Load time of session-summary admin page in a clusterOF-3048Resolved issue: OF-3048Guus der Kinderen
- LDAP Authentication Password 'authpassword' valueOF-3047Resolved issue: OF-3047Guus der Kinderen
- MultiUserProvider should only use supported fieldsOF-3046Resolved issue: OF-3046Guus der Kinderen
- Database update reports success without checkingOF-3045Guus der Kinderen
- Cache inconsistency: `routeOwnersByClusterNode` out of syncOF-3044Resolved issue: OF-3044Guus der Kinderen
- Get Idle Users command is implemented but not returned in DiscoOF-3043Resolved issue: OF-3043Dan Caseley
- Include DB2 Database Drivers in DistributionOF-3042Guus der Kinderen
- LocalOutgoingServer's canProcess error handling introduces deadlockOF-3041Resolved issue: OF-3041Guus der Kinderen
- Base64 decoding issue when resizing avatarsOF-3040Resolved issue: OF-3040Guus der Kinderen
- Unable to execute ClientSessionTask 'incrementConflictCount'OF-3039Resolved issue: OF-3039Guus der Kinderen
- Reduce verbosity of Socket Connection reset log messages (c2s only)OF-3038Resolved issue: OF-3038Guus der Kinderen
- Admin console page to review failed S2S connection attemptsOF-3037Guus der Kinderen
- Improve log messages when unable to connect to a remote host that is unreachableOF-3036Resolved issue: OF-3036Guus der Kinderen
- Failure to get address from detached session over cluster shouldn't log an errorOF-3035Resolved issue: OF-3035Guus der Kinderen
- Stream Management optional close shouldn't log errorOF-3034Resolved issue: OF-3034Guus der Kinderen
- Modify Stream Management to account for short-lived background appsOF-3033Resolved issue: OF-3033Guus der Kinderen
- Monal doesn't receive messages sent while 'detached'OF-3032Guus der Kinderen
- Detached clients generate errors in log when inspected (clustering)OF-3031Resolved issue: OF-3031Guus der Kinderen
- "Setting locale to X" isn't a warningOF-3030Resolved issue: OF-3030Guus der Kinderen
- False postivie for "Client route not found for route {}, while user session still existed"OF-3029Resolved issue: OF-3029Guus der Kinderen
- Netty threads from 'child' eventloop should use Netty-default settingsOF-3028Resolved issue: OF-3028Guus der Kinderen
- Give parent eventloop threads a recognizable nameOF-3027Resolved issue: OF-3027Guus der Kinderen
- Race condition in RoutingTable lead to inconsistent stateOF-3026Resolved issue: OF-3026Guus der Kinderen
- Replace inline <style> element in system-properties.jspOF-3025Guus der Kinderen
- Replace inline <style> element in system-clustering.jspOF-3024Guus der Kinderen
- Replace inline <style> element in system-cache-details.jspOF-3023Guus der Kinderen
- Replace inline <style> element in server-props.jspOF-3022Guus der Kinderen
- Replace inline <style> element in server-db-stats.jspOF-3021Guus der Kinderen
- Replace inline <style> element in server-connectiontest.jspOF-3020Guus der Kinderen
- Replace inline <style> element in security-audit-viewer-jsp.jspOF-3019Guus der Kinderen
- Replace inline <style> element in plugin-admin-jsp.jspOF-3018Guus der Kinderen
- Replace inline <style> element in logviewer.jspOF-3017Guus der Kinderen
- Replace inline <style> element in log.jspOF-3016Guus der Kinderen
- Replace inline <style> element in index.jspOF-3015Guus der Kinderen
- Replace inline <style> element in connection-managers-settings.jspOF-3014Guus der Kinderen
- Replace inline <style> element in available-plugins.jspOF-3013Guus der Kinderen
50 of
Ignore unexpected 'subscription' values in Roster Set
Description
Environment
None
Details
Details
Assignee
Guus der Kinderen
Guus der KinderenReporter
Guus der Kinderen
Guus der KinderenComponents
Priority
Created May 1, 2025 at 11:44 AM
Updated May 1, 2025 at 1:11 PM
Activity
Guus der Kinderen May 1, 2025 at 11:45 AM
Reproduction:
12:55:16.44 SENT (1):
<iq id='CVQDW-72' type='set'>
<query xmlns='jabber:iq:roster'>
<item jid='test-target-mtm3m@example.org' subscription='foobar'/>
</query>
</iq>
12:55:16.86 RECV (1):
<iq type="error" id="CVQDW-72" from="smack-inttest-one-t1i2s@example.org" to="smack-inttest-one-t1i2s@example.org/one-t1i2s">
<query xmlns="jabber:iq:roster">
<item jid="test-target-mtm3m@example.org" subscription="foobar"/>
</query>
<error code="500" type="wait">
<internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
2025.05.01 12:55:16.085 ERROR [socket_c2s-worker-11]: org.jivesoftware.openfire.handler.IQRosterHandler - Internal server error
java.lang.IllegalArgumentException: No enum constant org.xmpp.packet.Roster.Subscription.foobar
at java.lang.Enum.valueOf(Enum.java:293) ~[?:?]
at org.xmpp.packet.Roster$Subscription.valueOf(Roster.java:380) ~[tinder-2.0.0.jar:?]
at org.xmpp.packet.Roster.getItems(Roster.java:241) ~[tinder-2.0.0.jar:?]
at org.jivesoftware.openfire.handler.IQRosterHandler.manageRoster(IQRosterHandler.java:222) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.handler.IQRosterHandler.handleIQ(IQRosterHandler.java:118) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:125) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:403) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:106) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:74) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:392) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler.java:90) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:334) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.net.StanzaHandler.processStanza(StanzaHandler.java:222) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:114) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.nio.NettyConnectionHandler.channelRead0(NettyConnectionHandler.java:142) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at org.jivesoftware.openfire.nio.NettyConnectionHandler.channelRead0(NettyConnectionHandler.java:50) ~[xmppserver-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.118.Final.jar:4.1.118.F>
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[netty-codec-4.1.118.Final.jar:4.1.118.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[netty-codec-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.118.Final.jar:4.1.118.F>
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289) ~[netty-handler-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.118.Final.jar:4.1.118.F>
at io.netty.handler.traffic.AbstractTrafficShapingHandler.channelRead(AbstractTrafficShapingHandler.java:506) ~[netty-handler-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.118.Final.jar:4.1.118.F>
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.118.Final.jar:4.1.118>
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:732) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:658) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.118.Final.jar:4.1.118.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998) ~[netty-common-4.1.118.Final.jar:4.1.118.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.118.Final.jar:4.1.118.Final]
at java.lang.Thread.run(Thread.java:1583) [?:?]
RFC 6121 section 2.1.5 defines:
Openfire currently ignores subscription values that are otherwise valid subscription item values (such as
none
andboth
) but it throws an error when a different value (e.g.foobar
) is used.The specification clearly states that any value MUST be ignored, so returning an error is not quite right. Instead, that value should be ignored and the Roster Set should be processed as if it wasn’t there.