GNOME Bugzilla – Bug 539765
Jabber contacts in the jabber roster with subscription=none are not shown
Last modified: 2010-03-31 08:41:37 UTC
Please describe the problem:
Jabber contacts in the jabber roster with subscription=none are not shown in the contact list, even when "show offline contact" option is enabled. Theses contacts are shown in a different client like Psi but not in Empathy. I think Empathy should show all contacts, whatever the subscription status is.
Empathy can add contacts with subscription=none. Theses contacts will be visible if the user uses a different Jabber client (Psi) but not in Empathy.
Steps to reproduce:
1. Menu "Chat" -> "Add contact"
2. Identifier: Write a jid there
3. Write a new group name and click on "Add group"
4. If you run Gabble with LM_DEBUG=all, you will see that the contact is immediately added in the roster.
5. Click on "cancel".
6. The contact is not visible in your Empathy contact list
7. The contact is immediately visible (after step 3) in the Psi contact list if Psi is running.
- Empathy adds a contact although I clicked on cancel
- Contacts with subscription=none are not visible
- Do not add contacts until the user click on "Add"
- Show all contacts in the contact list
Does this happen every time?
The Telepathy spec has some server-defined lists like "subscribe", "publish":
Gabble has another list called "known" that includes all contacts, including thoses with subcription=none.
Empathy does not add the contact before clicking on "Add". It just request an handle which makes Gabble add the contact to the known list even if Empathy never asked to. The spec does not says what's the "known" list, but if requesting an handle implies adding it to that list it should be make clear.
On Gossip this contacts are available in the roster, but with a special symbol for not authorized (a gray triangle or question mark, I can't remember). I suppose to handle them like offline contacts, but with such a special symbol.
(In reply to comment #1)
> Empathy does not add the contact before clicking on "Add". It just request an
> handle which makes Gabble add the contact to the known list even if Empathy
> never asked to.
This is not true. Requesting a handle does not add contacts to the known list (if it did, unused handles would never be released because of the known list's reference to them, leading to unbounded memory use).
However, SetAliases() does add contacts to the known list as a side-effect (as an implementation detail of how XMPP works), which I think is what's happening here.
> The spec does not says what's the "known" list, but if
> requesting an handle implies adding it to that list it should be make clear.
The known list is undocumented. In Gabble it's precisely the set of contacts on the XMPP roster. However, because the known list has never been documented, its semantics vary between connection managers and it should not be used.
Recent telepathy-spec versions document a "stored" list, which is the set of contacts stored on the server (if any). Gabble's "known" list will soon be renamed to "stored" (this is <http://bugs.freedesktop.org/show_bug.cgi?id=19901>) at which point Empathy can fix this bug by showing every contact who is on any of the "subscribe", "publish" or "stored" lists.
Has gabble's "known" list been renamed to "stored" so Empathy can make the fix?
(In reply to comment #4)
> Has gabble's "known" list been renamed to "stored" so Empathy can make the fix?
Yes, since Gabble 0.7.28 (<https://bugs.freedesktop.org/show_bug.cgi?id=19901>). https://bugs.freedesktop.org/show_bug.cgi?id=16480 tracks the implementation in other CMs: https://bugs.freedesktop.org/show_bug.cgi?id=19902 for Haze, and https://bugs.freedesktop.org/show_bug.cgi?id=19903 for Butterfly.
We should display contacts from the "stored" list.
Not a blocker but it would be good if Gabble would return the Unknown presence for such contacts: https://bugs.freedesktop.org/show_bug.cgi?id=25583
Created attachment 149691 [details] [review]
libempathy-gtk/empathy-images.h | 2 +-
libempathy-gtk/empathy-ui-utils.c | 3 +-
libempathy/empathy-contact-manager.c | 2 +
libempathy/empathy-tp-contact-list.c | 169 +++++++++++++++++++++++++++-------
libempathy/empathy-utils.c | 3 +-
5 files changed, 141 insertions(+), 38 deletions(-)
*** Bug 601568 has been marked as a duplicate of this bug. ***
about this bug... I just created two debug logs which we sent to apple because the chair at our university thinks it could be some problem with their jabber daemon.
maybe the logs help us to find out if the problem is really theirs or maybe something else.
Whats strange is the following:
the contacts that do not show up in the contacts list and have no alias (they see me, can write me and I don't see their name) show up as following lines in the log:
empathy/(null)-DEBUG: 02/09/2010 23:01:40.756022: tp_contact_factory_update_capabilities: Changing capabilities for contact [test-user-does-not-show-up]@[anonymized-server] (2) to 12
empathy/Contact-DEBUG: 02/09/2010 23:01:40.756850: contact_list_store_contact_update: Contact:'' in list:NO, should be:YES
what does the in list: NO and should be:YES mean? the contact I picked out is per default in a group with me and should appear there. it does in pidgin but not in empathy. why is the contact name empty ("Contact:'' in ...")?
Created attachment 153370 [details]
the logs from empathy, I took some lines out because I have about 100 contacts in that account that show up in the log but not in the contacts list (I see only the ones I explicitly added)
Created attachment 153371 [details]
Felix: I'd need full logs from Gabble to check how is this contact registered in the roster.
This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.