[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jabber-jdev
Subject:    [jdev] Avatar loop on Google Jabber servers
From:       Alban Crequy <alban.crequy () collabora ! co ! uk>
Date:       2009-10-02 12:07:25
Message-ID: 20091002130725.11abc679 () chocolatine ! cbg ! collabora ! co ! uk
[Download RAW message or body]

Hi,

There is a bug [1] in Telepathy Gabble which become visible since 0.8.3
(or maybe before) when the user connects 2 times (with 2 different
resources) on a Google Jabber server. There is an infinite loop of
<presence> stanza sent from both Jabber clients: when each client
receives a <presence> stanza, it replies with a presence stanza, and
there is an infinite ping-pong.

It seems to happen only when connected to a Google Jabber server. The
reason is that Google Jabber servers modify the <presence> stanza sent
by a client before broadcasting it to the other resources (see
thread [2]). I think it is a bug in the Google Jabber server with
regard to XEP-0153 section 4.4 [3]. It should be ok if the server add
the photo in <presence> stanza when the client does not put any
"<x xmlns='vcard-temp:x:update'>" node. In this case, the client does
not support XEP-0153 and the server may want to simulate it. But if the
client adds such a node without any <photo> node inside, the server
should not attempt to modify it: the absence of <photo> node is done on
purpose either to indicate the client does not advertise any image (see
XEP-0153 section 4.1.2.) or to resolve an avatar conflict between 2
resources (see XEP-0153 section 4.4).

The loop is the following:
1. we get a <presence> stanza with a new photo hash
2. we send a <presence> stanza immediately without <photo> node as per
   XEP-0153 section 4.4.
3. Google server adds a photo stanza and broadcast our <presence>
   stanza to other resources
4. we send a vCard request to the server
5. the server replies with an error resource-constraint with error type
   "wait"
6. the other resource receives our modified stanza, and performs step 1
   to 5.

The fixes in Gabble 0.8.4 are not enough. The fixes we want to do:

- When the server replies to a vCard request with an error of type
  "wait", do not send again a vCard request to the same JID for some
  time.
- When we are in a conflict resolution (XEP-0153 section 4.4), and
  Gabble receives a new presence stanza, do not enter again in the
  conflict resolution: it is not supposed to be recursive.

[1] https://bugs.freedesktop.org/show_bug.cgi?id#684
[2] http://mail.jabber.org/pipermail/jdev/2009-September/029222.html
[3] http://xmpp.org/extensions/xep-0153.html

--
Alban
_______________________________________________
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f 
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: JDev-unsubscribe@jabber.org
_______________________________________________
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic