[Bug 26866] Conn.I.Addressing etc. — requesting handles for a vCard field or URI

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Nov 14 15:27:35 CET 2011


https://bugs.freedesktop.org/show_bug.cgi?id=26866

Simon McVittie <simon.mcvittie at collabora.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |will.thompson at collabora.co.
                   |                            |uk

--- Comment #63 from Simon McVittie <simon.mcvittie at collabora.co.uk> 2011-11-14 06:27:35 PST ---
(In reply to comment #62)
> or is your proposal just "it's perfect, undraft it
> as-is"?

It isn't. :-P

> Each contact's attributes will always include at least the identifier
> that would be obtained by inspecting the handle
> (org.freedesktop.Telepathy.Connection/contact-id), and the vCard field
> used for requesting the contact in
> org.freedesktop.Telepathy.Connection.Interface.ContactInfo/info.

This is old and wrong: the better version (as implemented in Andre's Gabble
branch) is to say that the attributes will always include .../contact-id and
.../requested-address. This is no longer anything to do with ContactInfo.

Similarly, when requesting by URI, you always get at least .../contact-id and
../requested-uri.

This representation is flawed, though: suppose I request two URIs (or two vCard
fields) that resolve to the same contact:

    GetContactsByURI(["xmpp:simon.mcvittie at collabora.co.uk",
                      "xmpp:simon.mcvittie at Collabora.CO.UK"], [])

The result is not useful:

    {
        my handle => {
            .../contact-id => "simon.mcvittie at collabora.co.uk",
            .../requested-address => one of the things you asked for, randomly
    }

... you find out that one of the URIs (randomly chosen) is me, and you think
the other was invalid, whereas in fact it was perfectly valid and also resolved
as me.

The cleanest way to fix this (but I'm not sure how easy it is to implement in
telepathy-glib) would be to throw away the .../requested-foo pseudo-attributes,
and change the result to a{su}a{ua{sv}} like this:

    {
        # thing you asked for => handle
        # if you requested by vCard field, the single vCard field is omitted
        # (you are expected to remember what you asked for)
        "xmpp:simon.mcvittie at collabora.co.uk" => my handle,
        "xmpp:simon.mcvittie at Collabora.CO.UK" => my handle,
    },
    {
        my handle => { .../contact-id => ... }
    }

The next best thing would be to make requested-addresses and requested-uris
into arrays so they can express this sort of thing, as a list of more than one
requested string.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA Contact for the bug.



More information about the telepathy-bugs mailing list