Openfire 4.0.0 - Offline Messages: only the first message is delivered to client

Hello everyone.

Until yesterday I used Openfire 3.10.3 with Spark 2.7.4: no problem with offline messages.

This night I have upgraded to new version 4.0.0.

All is OK except the offline messages:

  • user A is offline

  • user B sent 3 messages to A

  • user C sent 2 messages to A

  • user D sent 5 messages to A

  • when user A connects to Openfire with the Spark client, he only has the first message of user B, the first message of user C and the first message of user D. The other offline messages are lost.

All the 10 messages are present in the Monitoring plugin.

Any idea?

Thank you very much.

Best regards.

Alessandro

1 Like

Thanks for this report. Are you able to check the ofOffline database table to see what exists there?

Confirm the issue. Tested also with Exodus and Pidgin. Both get all offline messages. Spark 2.7.3 and 2.7.4 only show the first message and do not show (Offline) prefix before the message. They do get the messages (raw packets). But in 4.0.0 delayed message is different and this is causing problems for Spark.

3.10.3 offline message:

TTT1t14TEH

4.0.0 offline message:

TTT12fNi7e

Missing the bolded part. Spark is probably looking for jabber:x:delay. Suspecting this commit Merge pull request #492 from sco0ter/smDelay · igniterealtime/Openfire@8d2f072 · GitHub

Not sure if this is issue with Spark or Openfire. Maybe that’s the code in Spark adding the prefix causing this. Spark/TranscriptWindow.java at master · igniterealtime/Spark · GitHub Line 190

Hi Daryl.

Thank you for your reply.

Yes, in the ofOffline database table I can see all the messages when the clients are offline.

All the messages are also in the Monitoring plugin (I can see them in ‘Archiving’–>‘Search Archive’).

An example:

  • user A is online

  • user B is offline

  • user A writes the message ‘Hello’ to user B

  • after 5 minutes user A writes the message ‘How are you?’ to user B

  • user B is still offline

  • I can see the two messages in ofOffline table and in ‘Search Archive’

  • user B now switches on his PC and opens Spark: he can only read the first message ‘Hello’

I have done hundreds tests with 4.0.0 (no problems with 3.10.3).

Thank you.

Best regards.

Alessandro

Update:

Changing

DelayInformation inf = (DelayInformation)message.getExtension(“x”, “jabber:x:delay”);

to

DelayInformation inf = (DelayInformation)message.getExtension(“delay”, “urn:xmpp:delay”);

only fixes the prefix issue, but Spark still only shows the first offline message. So the issue is somewhere else.

It’s more likely this PR: https://github.com/igniterealtime/Openfire/pull/341 (OF-990)

It must be some issue in Spark.

Have filed a ticket for Spark for now, but i don’t know how to fix this. Even if we know how to fix this, it will require an urgent release of Spark. [SPARK-1673] Only first offline message is shown - Jive Software Open Source

For the record: other XMPP servers, including ejabberd, Tigase, MongooseIM have dropped support for XEP-0091 as well:

ejabberd 15.06 has been released | ejabberd

Server features | tigase.net

Don’t send obsolete XEP-0091 timestamp · gmodarelli/MongooseIM@1e98fb3 · GitHub

So this issue should not be new and will likely occur with these other servers, too.

The old protocol is deprecated since 9 years, actually long enough for Spark to upgrade to the new one.

This is new in conjunction with Openfire. Spark always lags behind Openfire, unfortunately. Though one would think that two software units provided by same entity should work together. That’s second major Openfire release causing some issues. Spark has no lead developer for like 4-5 years.

I’ve fixed it with Replace deprecated XEP-0091 with XEP-0203. by sco0ter · Pull Request #73 · igniterealtime/Spark · GitHub

Thanks CSH! (don’t know why my search didn’t give me all the other places with old extension…). Will apply and test this today (in around 5-6 hours).

If somebody needs a fix quick, then nightly build with CSH’s fix is already out - http://www.igniterealtime.org/builds/spark/dailybuilds/spark_2_7_4_751.exe

Will try to release a hotfix 2.7.5 version tomorrow.

Thank you wroot and CSH for the very quick solution!!!

Alessandro

I am having same issue. So where can i change the code ?
On openfire server or on client spark?

On which path should i change the code? on server or client ?