this week I've had to fix the way jid are used for file transfer.
To explain you the problem, I need to explain you how communication is done in XMPP (*). To be brief, when an entity (with jid
email@example.com) want to access a component (with jid
files.example.net), it sends a "stanza" which is an XML element. There are 3 kinds of stanza (
In our case we use
iq stanza, so Louise sends something like:
<iq from="firstname.lastname@example.org" to="files.example.net" type="set"> […] </iq>
and the component answers with something like this:
<iq from="files.example.net" to="email@example.com" type="result"> […] </iq>
Last week I've explained how I've used the local part in components to access files from somebody else. So far, when creating a stanza, I was using the jid we are connecting with in the
from attribute (i.e. where we set the sender of the message).
This is working well with clients, or components if you don't use local part, but when somebody was accessing files from
firstname.lastname@example.org, the jid used by the component is
files.example.net, a different one, so this was not working anymore.
To fix that, I've simply had to change the code to use the jid used to contact the components (i.e. the one in the
to attribute of the original request) instead.
I've also fixed a MAM (Message Archive Management, XEP-0313) bug where the same messages were requested again on next start up under certain conditions.
Finally, I've completed a generic invitation mechanism to notify somebody when an event or photo album is available. When the invitation is received, the data needed to retrieve the thing is saved in a private "list of interest", which is a pubsub node. With that I can now diplay in Libervia the available photo albums as you can see in the screen capture below.
We are nearly there, I still have to complete the guest page (page for people without XMPP account), so they can see events or photo albums, and I can launch the beta. It's a matter of days now.
Thanks for reading, as always feedbacks are welcome.
(*) to learn more about XMPP, you can check my series of articles "Let's talk XMPP". It's originally written in French, and only 4 articles on 10 are translated, help would be welcomed to translate the other ones.