Bug 45145

Summary: attempt to call offline/invisible people by guessing a fairly interoperable dialect
Product: Telepathy Reporter: Simon McVittie <smcv>
Component: gabbleAssignee: Telepathy bugs list <telepathy-bugs>
Status: NEW --- QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: enhancement    
Priority: medium CC: devurandom
Version: git master   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Simon McVittie 2012-01-23 12:05:06 UTC
We currently try to call offline/invisible people via temporary presence sharing (aka "decloaking" within Gabble; <http://xmpp.org/extensions/xep-0276.html>) which basically sends them directed presence with an embedded request to leak their presence back to us.

This is largely useless, because nobody implements the "leak your presence" side except us, we have it off-by-default ourselves, and the reason it's off-by-default is that it's a presence leak. In principle it could be useful when calling gateways in which "leaking" presence is not a problem (because all the virtual users are permanently available anyway), but telepathy-fargo is the only gateway that actually implements it, and is not widely deployed. It's also not a particularly elegant protocol (there's an extra round-trip when it works, and an arbitrary delay when it doesn't).

Now that people implement modern versions of Jingle and the namespace has stopped randomly changing, we could do a lot worse than just trying it:

19:47 < Robot101> google tends to assume an interoperable jingle subset for 
                  calls and just whack an offer together
...
19:55 < smcv> Robot101: oh, hmm. how does the "just staple together some caps" 
              work if you don't know a full-JID?
19:56 < smcv> that's the other reason we need presence, apart from knowing 
              which dialect/etc. to guess at
19:56 < smcv> maybe we could send it to apparently-offline people as a 
              <message/> and they get a "missed call" though :-)
19:56 < Robot101> basically if you peg in a JID (whether a bare server, 
                  user@server or full) then the other end can choose to respond 
                  and make it work
19:57 < Robot101> (be aware call forking may ensue, I guess?)
19:57 < smcv> oh I see. so the bare JID case (which is all you'll ever get 
              unless you type in or remember resources) will only work with 
              server cooperation
19:57 < Robot101> yeah
19:57 < Robot101> in this picture, a gateway is a co-operating server
Comment 1 Will Thompson 2012-01-24 08:32:04 UTC
(In reply to comment #0)
> 19:57 < smcv> oh I see. so the bare JID case (which is all you'll ever get 
>               unless you type in or remember resources) will only work with 
>               server cooperation

Here's a really shoddy server-coöperation plugin for Prosody which sends back a redirect if you try to call a bare JID: http://people.collabora.co.uk/~wjt/tmp/mod_jingle.lua

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.