This is a list of defects I have encountered in using the pubsub features of OpenFire. While some are definite defects, many are probably due to changes in the spec between 1.8 and 1.12. I encountered these while writing a pubsub client library, and since I only had version 1.12 to go by, that is what I made the library compatible with.
I have included fixes (and upgrades) to resolve some of these which helps bring the implementation up to the 1.12 version of the specification. I would have liked to do a complete job (in upgrading) but I don’t currently have time to address all the issues.
- An error occurs if request to get items from a node is called without and subscription id. The subscription id is only required if there are multiple subsriptions. (http://xmpp.org/extensions/xep-0060.html#subscriber-retrieve-error-subid) Status - Fixed
- Getting a specific list of items from a node has an error in which it copies the input list into the result and then retrieves the results from the node. Thus the reply is double the size with each item appearing twice, once without the payload and once with. This also results in requests with max_items set to return that attribute in the result as well. (Location - LeafNode:sendPublishedItems - copies the request items element into the result) Status - Defect
- Request to get node subscriptions retrieves subscriptions for all nodes. (Location - PubSubEngine:getSubscriptions - Doesn’t check for ‘node’ attribute). Status - Defect
- Subscription items include and ‘affiliation’ attribute which is not in the schema. Status - Defect or Upgrade Required
- Attempting to retrieve subscriptions for a node will fail when there was no subscription id specifed in the request, even though the user only has 1 subscription. This should work if there are not multiple subscriptions.Status - Fixed
- Cannot retrieve options for for subscription if from and subscriber jid don’t match. Only the bare jid should have to match. Status - Defect
- Event message with SHIM information holding multiple subscriptions should have the name=‘SubID’, not ‘pubsub#subID’ as it is currently. Status - Defect or Upgrade
- Delay information on published item uses incorrect schema. Probably a version upgrade. Status - Fixed
- Publishing multiple items at once causes an exception on the server due to add() not being supported on the List returned from Arrays.asList(). Status - Fixed
- On node configuration, the configuration event published to subscribers contained an item element with an id=‘configuration’ instead of a configuration element. Probably a version related issue. Status - Fixed
- Subscription owner should be the jid as supplied, not the bare jid. The spec says that nay jid should be able to be used. Currently all subscriptions are stored using the bare jid as the owner. Status - Defect
- Request for subscription options returns an invalid reply. The ‘option’ element should not have a namespace and should contain a form. Status - Defect or Upgrade
- Persistent nodes will not store items unless the max_items is set. Otherwise, it will check for size greater than -1 (unset max number) and never persist. Status - Fixed
- Posting multiple items with the same ID will cause a new ID to be generated for the item instead of overwriting the item. Status - Fixed
LeafNode.java (20542 Bytes)
Node.java (87665 Bytes)
NodeAffiliate.java (12853 Bytes)
PubSubEngine.java (88215 Bytes)