[Telepathy-commits] [telepathy-spec/master] MediaSignalling: remove "lowering barrier to entry" wording, and specify that transports passed to EnsureChannel etc. are ignored

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Mar 24 09:46:06 PDT 2009


The "lowering barrier to entry" wording would allow installation of a
client A (that handles ICE only) to break an unrelated client B's support
for GTalkP2P, if B relied on this mechanism. As a result, nobody can
rely on this mechanism, so it's basically useless.

The ability to disable transports by parameters to EnsureChannel etc. is
only a partial solution, since channels requested by an address book
can't take advantage of this mechanism. A better solution (to be added
later) would be to introduce interactive transport negotiation, done by
the streaming implementation (e.g. before Ready).
---
 spec/Channel_Interface_Media_Signalling_Future.xml |   94 ++++++--------------
 1 files changed, 29 insertions(+), 65 deletions(-)

diff --git a/spec/Channel_Interface_Media_Signalling_Future.xml b/spec/Channel_Interface_Media_Signalling_Future.xml
index 79a0673..9c479bb 100644
--- a/spec/Channel_Interface_Media_Signalling_Future.xml
+++ b/spec/Channel_Interface_Media_Signalling_Future.xml
@@ -67,9 +67,31 @@
           properties list of the channel class that advertises a contact's
           ability to receive streamed media calls.</p>
 
-        <p>Clients that are able to receive calls with particular NAT
-          traversal mechanisms MAY include the following filters if
-          calling <tp:dbus-ref
+        <p>Clients SHOULD NOT pass ICETransportAvailable and similar
+          properties to <tp:dbus-ref
+            namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">EnsureChannel</tp:dbus-ref>
+          or similar functions. If they do, the connection manager MUST
+          accept and ignore any such property that is in the allowed properties
+          list.</p>
+
+        <tp:rationale>
+          <p>There is currently no way for clients to influence the choice
+            of transport: in general, a client making a call can't know the
+            capabilities of the streaming implementation, or even which
+            streaming implementation will be used (channels will often be
+            requested by an address book or similar application that will not
+            handle the channel itself).</p>
+
+          <p>If a mechanism for transport negotiation is added, it should be
+            something that happens after the request, but before calling
+            <tp:dbus-ref
+              namespace="org.freedesktop.Telepathy">Media.SessionHandler.Ready</tp:dbus-ref>,
+            so that it is the streaming implementation that chooses the
+            transport, rather than the requesting client.</p>
+        </tp:rationale>
+
+        <p>Clients that are able to receive calls with particular transports
+          MUST include the following filters if calling <tp:dbus-ref
             namespace="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities.DRAFT">SetSelfCapabilities</tp:dbus-ref>
           (clients of a <tp:dbus-ref
             namespace="org.freedesktop.Telepathy">ChannelDispatcher.DRAFT</tp:dbus-ref>
@@ -87,71 +109,13 @@
         </ul>
 
         <p>Connection managers MAY use this information to adjust the
-          transports for which they advertise support to other contacts.
-          If a client has indicated support for any particular transports,
-          the connection manager SHOULD advertise support for
-          each transport that is supported by any client, and also
-          supported by the CM itself.</p>
+          transports for which they advertise support to other contacts.</p>
 
         <tp:rationale>
-          <p>This minimizes the possibility that a call will be started that
-            cannot in fact succeed, because the intersection of the contacts'
-            available transports is empty.</p>
+          <p>In particular, in XMPP, the connection manager will not be
+            callable unless a client has told it to advertise support for
+            at least one transport.</p>
         </tp:rationale>
-
-        <p>If no client has mentioned any of the transports known to the
-          connection manager in a call to SetSelfCapabilities, the connection
-          manager SHOULD advertise support for every transport that it can
-          signal.</p>
-
-        <tp:rationale>
-          <p>This simplifies implementation on integrated platforms like Maemo,
-            where it can be assumed that client libraries will support all the
-            "standard" transports known to any connection manager, and
-            lowers the "barrier to entry" for new Telepathy clients.</p>
-        </tp:rationale>
-
-        <p>Clients making outgoing calls for which the same client that made
-          the request will handle the streaming MAY indicate their ability or
-          inability to handle particular transports by including
-          <code>ICETransportAvailable = true</code>,
-          <code>RawUDPTransportAvailable = false</code>, etc.
-          in the request properties parameter of their call to <tp:dbus-ref
-            namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">EnsureChannel</tp:dbus-ref>
-          or similar functions. When they do so, the connection manager
-          SHOULD attempt to use a transport that the client has indicated
-          it is able to handle; if this is not possible, the connection
-          manager SHOULD raise an error instead of creating a channel.</p>
-
-        <tp:rationale>
-          <p>This enables such clients to restrict the CM to the subset of
-            transports supported by that particular client.</p>
-        </tp:rationale>
-
-        <p>Clients making outgoing calls for which they will not themselves
-          handle the streaming (e.g. an address book starting a call which
-          will be streamed by a separate call UI) SHOULD NOT include those
-          properties in the request.</p>
-
-        <tp:rationale>
-          <p>In general, such a client can't know the capabilities of the
-            streaming implementation, or even which streaming implementation
-            will be used.</p>
-        </tp:rationale>
-
-        <p>In the absence of any indication of supported transports from the
-          client, the connection manager SHOULD assume that the transports
-          indicated by calling SetSelfCapabilities are available. If
-          no transports were indicated as supported by calling
-          SetSelfCapabilities either, it SHOULD assume that any transport
-          that it can signal will be acceptable.</p>
-
-        <p>If this property, or any of the similar transport availability
-          properties, is passed to EnsureChannel (as opposed to CreateChannel),
-          the connection manager SHOULD ignore these properties when checking
-          whether it can return an existing channel as suitable; these
-          properties only become significant when the connection manager has
-          decided to create a new channel.</p>
       </tp:docstring>
     </property>
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list