Duplicate chat messages on client side

We have one user who when he sends a chat it shows up 2 times on the other users chat. He is using the same mobile client we all are (Astral) and he is the only one with the issue. We have compared client side (mobile) settings and we are all set the same. Any thoughts on why his user is sending duplicate (or is the server doing this)?

Also, just noticed that in the client sessions section of Openfire his user has a green presence indicator with an exclamation point inside of it. What does that mean (everyone else is just green)?

UPDATE. Now my mobile client is showing the same symptoms.

Maybe your client updated and he was the first with updated version. It looks more like client’s issue. Try testing with some other client and see if that happens again. Maybe contact client’s developers, maybe it has error logs somewhere. You can also check Openfire logs for any hints.

Green bubble with exclamation mark means “Free for chat”. This is just another status in XMPP/IM, same as Online, Away, etc. Your client probably has an option to change it and this user probably changed it, maybe accidentally.

Apparently this has been an issue for awhile (since 2.7.4).

Do you mean that you send messages from AstraChat (iOS) to Spark and it then shows up twice? What version of Spark and Openfire are in use?

After reading that older thread it seems this might be an issue with AstraChat iOS client, but without some detailed debug logs with raw packets sent from AstraChat to the server and from the server to Spark it is hard to tell what is happening. As it is not happening with other combinations of clients it would be best to contact AstraChat developers about that.

I’ve reached out to AstraChat to see if they can shed any light on it as well. Using Spark 2.8.3 and Openfire 4.2.3

I just tested using Astra chat on my phone to chat with another user using Pidgin on his Mac (through our Openfire 4.2.3). It works as normal (no duplicates) and does not show me as offline when a chat comes from my mobile (like Spark does). So this may be a Spark issue since other desktop clients aren’t exhibiting the same behavior as Spark is.

Here is the debug info from received packets for a test message from Astra to Spark. It looks like it’s being received only 1 time. The message sent from Astra was Test10. If I send the exact same thing to a Pidgin client it only shows 1 time

<?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="openfire" id="5paqzor24p" xml:lang="en" version="1.0"><message id="dxmrxppl88" to="test@openfire" from="dennish@openfire/AC" type="chat"><inactive xmlns="http://jabber.org/protocol/chatstates"></inactive></message>
<message id="dxmrxppl89" to="test@openfire" from="dennish@openfire/AC" type="chat"><composing xmlns="http://jabber.org/protocol/chatstates"></composing></message>
<message id="dxmrxppl91" to="test@openfire" from="dennish@openfire/AC" type="chat"><body>Test10</body><delay xmlns="urn:xmpp:delay" stamp="2018-12-27T19:38:22+00:00"></delay><request xmlns="urn:xmpp:receipts"></request><active xmlns="http://jabber.org/protocol/chatstates"></active></message>
<message id="dxmrxppl92" to="test@openfire" from="dennish@openfire/AC" type="chat"><inactive xmlns="http://jabber.org/protocol/chatstates"></inactive></message>
<iq type="get" id="276-22763" from="openfire" to="test@openfire/Spark"><ping xmlns="urn:xmpp:ping"/></iq>

<delay xmlns="urn:xmpp:delay" stamp="2018-12-27T19:38:22+00:00"></delay>
means it is delivered as an offline message. For some reason AstraChat (or Openfire) thinks Spark user is offline. You can try sending a message from Spark to Spark and there shouldn’t be that delay tag. It might be a bug that Spark displays it twice, but original cause is that delay packet. But i can’t say from this why and what is happening exactly.

Is there anything I can provide that might help troubleshoot (if you want to) the issue?

Yes, Spark to Spark works fine (along with Pidgin to Spark and vice versa). Astra to Spark seems to be the only hiccup. I’d like to find a mobile client that works properly, but of the ones I’ve used only 2 had any promise, IM+ Pro (which randomly just won’t connect to the server and their support is USELESS) and Astra. Any other iOS client I’ve tried either won’t connect to the Openfire server or won’t notify if a chat is received once the phone has been sitting for a little bit with the screen off (even though background app refresh is on). IM+ Pro and Astra seem to handle backgrounding perfectly.

You can look through Openfire logs (/openfire/logs/all.log) for any clues and maybe also Spark logs (C:\Users\User\AppData\Roaming\Spark\logs\ on Windows, not sure about macOS. There is a bunch of files, look through all of them and select events that correlate with the time of your issue).

I have tried with AstraChat on Android and wasn’t able to reproduce the issue with Openfire 4.2.3/4.3.0 Beta and Spark 2.8.3/2.9.0 nightly build (both on Windows). I don’t have iOS device to test. I want to help troubleshoot, but i have no idea so far.

Btw, even if this is somehow a Spark’s bug and there is a fix, i can’t say when and whether new Spark version will come out. Development is in stall currently.

Tried it on an android client and it works without duplicates and shows the proper presence. Looks like it’s an iOS program issue chatting to Spark clients.

At least in the past AstraChat was just a reskin of other clients. On Windows it was Swift, on Android - Conversations. Don’t remember what they used on iOS. Now it looks different and all versions share the look, but maybe that’s just the looks and they still use different clients under the hood.