Server-side support for XEP-184

Guys,

I didn’t find how to create an issue in issue tracker so I’m creating this discussion. According to XEP-184 (http://xmpp.org/extensions/xep-0184.html) two client are able to exchange with delivery receipts. From first sign this is not related to the server but then one of participants was offline openfire don’t save receipts because of this code from OfflineMessageStore

// ignore empty bodied message (typically chat-state notifications).         if (message.getBody() == null || message.getBody().length() == 0) {
       // allow empty pubsub messages (OF-191)
       if (message.getChildElement("event", "http://jabber.org/protocol/pubsub#event") == null)        {        return;        }         }

I suggest to extend this code a little bit and add one more check

// ignore empty bodied message (typically chat-state notifications).         if (message.getBody() == null || message.getBody().length() == 0) {
       // allow empty pubsub messages (OF-191)
       if ((message.getChildElement("event", "http://jabber.org/protocol/pubsub#event") == null) &&                     (message.getExtension("received", "urn:xmpp:receipts") == null))
       {        return;        }         }

Hello,

Please consider providing a ‘svn diff -u’ of your changes on the trunk subversion.

daryl

https://gist.github.com/abashev/8407402

We work around this issue by including an empty space character (" ") in the body on client side. Openfire will store it then.

Thanks, filed as OF-722