[ejabberd] rc1: PEP, presence. Bugs?

Gabriel Soto gabsoto at gmail.com
Fri Feb 8 17:30:44 MSK 2008


Hello.
I'm developing a client and using ejabberd 2.0.0-rc1 on Windows at the moment.
I noticed some strange behaviors related to PEP (XEP-0163) and presence.

These are the three issues I have. I'll list them first and then give
some examples:
1. PEP notifications generated due to initial presence come with a <x>
element instead of the <event> one.
2. If I send directed presence of type 'unavailable' to a user, every
presence I send for broadcasting after that is not sent to that user.
3. If I'm globally invisible, according to XEP-0126, I don't receive
PEP notifications.

Examples:
We'll suppose that userA and userB have a mutual presence subscription
(type 'both').
----
1. PEP notifications generated due to initial presence come with a <x>
element instead of the <event> one.

userA publishes mood info according to XEP-0107:
--userA sends:
<iq type='set' id='publish1'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <publish node='http://jabber.org/protocol/mood'>
      <item>
        <mood xmlns='http://jabber.org/protocol/mood'>
          <confused/>
        </mood>
      </item>
    </publish>
  </pubsub>
</iq>

userB (who is subscribed to userA's mood) sends initial presence:
--userB sends:
<presence>
  <c xmlns='http://jabber.org/protocol/caps' node='...' ver='...'/>
</presence>

--userB receives:
<message from='userA at server' to='userB at server/work'>
  <x xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='http://jabber.org/protocol/mood'>
      <item id='4B2639F2ABA1A'>
        <mood xmlns='http://jabber.org/protocol/mood'>
          <confused/>
        </mood>
      </item>
    </items>
  </x>
</message>

I believe that the <x> element is obsolete here, and it should be
<event>. Right?
Note that notifications generated when publishing a node do have the
<event> element instead.

----
2. If I send directed presence of type 'unavailable' to a user, every
presence I send for broadcasting after that is not sent to that user.

--userA sends:
<presence to='userB at server' type='unavailable'/>

--userB receives:
<presence from='userA at server/home' type='unavailable' xml:lang='en'
to='userB at server/work' />

--userA sends:
<presence/>

Then, userB doesn't receive that second presence broadcast from userA.

----
3. If I'm globally invisible (according to XEP-0126), I don't receive
PEP notifications.

--userA sends:
<presence type='unavailable'/>

userA activates privacy list for invisibility:
--userA sends:
<iq type='set' id='active1'>
  <query xmlns='jabber:iq:privacy'>
    <active name='invisible'/>
  </query>
</iq>

Note: the 'invisible' list blocks outgoing presence, and has this form:
<list name='invisible'>
  <item action='deny' order='1'>
    <presence-out/>
  </item>
</list>

userA sends available presence (it won't be broadcasted due to the
active privacy list):
--userA sends:
<presence>
  <c xmlns='http://jabber.org/protocol/caps' node='...' ver='...'/>
</presence>

Then, if userB publishes a PEP node for which userA has a
subscription, userA doesn't receive the notification.

----
Thanks,
Gabriel
JID: gabsoto at gmail.com


More information about the ejabberd mailing list