Roster and Presence Subscription

Hi Everybody,

I'm build a chat app using XMPPFramework and Ejabberd 15.11. I installed ejabberd from source and I'm using the default configuration file.

I was able to register some users using the mod_register and I used the XEP-0106 to escape @ in order to register users with email addresses. So far so good.

My problem now lies in the presence subscription process. When a user A adds a user B to his Roster and request a presence subscription, the following XMLs are sent to and received from the server. (For that I used the XMPPFramework method [XMPPRoster addUser: withNickname:])

SENT
Add item to Roster:
<iq type="set"><query xmlns="jabber:iq:roster"><item jid="userB\40email.com@localhost" name="B"/></query></iq>
Request Presence Subscription:
<presence type="subscribe" to="userB\40email.com@localhost"><x xmlns="vcard-temp:x:update"><photo>3293784d84d3211b3b4632c78d41a9192cd88057</photo></x></presence>

RECEIVED
Roster Result:

<iq xmlns="jabber:client" from="userA\40email.com@localhost" to="userA\40gmail.com@localhost/3554310354145252302231254" type="result"/>

New Roster Item:

<iq xmlns="jabber:client" from="userA\40email.com@localhost" to="userA\ 40email.com@localhost/3554310354145252302231254" id="push1265617159" type="set"><query xmlns="jabber:iq:roster"><item ask="subscribe" subscription="none" name="B" jid="userB\40email.com@localhost"/></query></iq>

As far I can say that's OK, but the user B never gets a subscription request, or any other message related to the subscription process. So I am wondering where my problem is. Can it be a configuration issue? Or maybe it's related to my use of XEP-0106?

Can anyone help me?

Thanks a lot

I tried with ejabberd git,

I tried with ejabberd git, and two instances of the stable Tkabber version for both users. Presence subscription works correctly. For instance, after subscription, userB receives presences like this from userA:

<presence from='userA\40email.com@localhost/tka1'
	to='userb\40email.com@localhost/tka2'
	xml:lang='es'>
  <show>away</show>
  <priority>8</priority>
</presence>

Try with desktop clients, like Gajim, Psi, or Tkabber, for userA and userB. Those clients have XMPP consoles that let you see the XMPP traffic in realtime.

Many thanks, I found my

Many thanks, I found my problem. The XMPPFramework does not send presence, so for the server I was offline even if I did authenticate successfully.

Many thanks. I found out using the PSI client :)

Can you tell me how you

Can you tell me how you solved the problem?

Syndicate content