[telepathy-gabble/master] enabled use of JingleTransportIceUdp
Senko Rasic
senko.rasic at collabora.co.uk
Mon Jun 29 04:43:04 PDT 2009
---
src/capabilities.c | 2 +-
src/jingle-factory.c | 2 ++
src/jingle-factory.h | 2 +-
src/media-channel.c | 41 +++++++++++++++++++++++++++++------------
src/namespaces.h | 5 ++---
src/types.h | 3 ++-
6 files changed, 37 insertions(+), 18 deletions(-)
diff --git a/src/capabilities.c b/src/capabilities.c
index 50c2b91..a84fbc0 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -60,7 +60,7 @@ static const Feature self_advertised_features[] =
{ FEATURE_OPTIONAL, NS_JINGLE_RTP, PRESENCE_CAP_JINGLE_RTP },
{ FEATURE_OPTIONAL, NS_JINGLE_RTP_AUDIO, PRESENCE_CAP_JINGLE_RTP_AUDIO },
{ FEATURE_OPTIONAL, NS_JINGLE_RTP_VIDEO, PRESENCE_CAP_JINGLE_RTP_VIDEO },
- { FEATURE_OPTIONAL, NS_JINGLE_TRANSPORT_ICE,
+ { FEATURE_OPTIONAL, NS_JINGLE_TRANSPORT_ICEUDP,
PRESENCE_CAP_JINGLE_TRANSPORT_ICE },
{ FEATURE_OPTIONAL, NS_OLPC_BUDDY_PROPS "+notify", PRESENCE_CAP_OLPC_1},
diff --git a/src/jingle-factory.c b/src/jingle-factory.c
index 1a9db85..4e604f0 100644
--- a/src/jingle-factory.c
+++ b/src/jingle-factory.c
@@ -37,6 +37,7 @@
#include "jingle-session.h"
#include "jingle-transport-google.h"
#include "jingle-transport-rawudp.h"
+#include "jingle-transport-iceudp.h"
#include "namespaces.h"
#include "util.h"
@@ -528,6 +529,7 @@ gabble_jingle_factory_constructor (GType type,
jingle_media_rtp_register (self);
jingle_transport_google_register (self);
jingle_transport_rawudp_register (self);
+ jingle_transport_iceudp_register (self);
return obj;
}
diff --git a/src/jingle-factory.h b/src/jingle-factory.h
index 9af5452..2ca3854 100644
--- a/src/jingle-factory.h
+++ b/src/jingle-factory.h
@@ -80,7 +80,7 @@ typedef enum {
JINGLE_TRANSPORT_UNKNOWN,
JINGLE_TRANSPORT_GOOGLE_P2P,
JINGLE_TRANSPORT_RAW_UDP,
- JINGLE_TRANSPORT_ICE
+ JINGLE_TRANSPORT_ICE_UDP,
} JingleTransportType;
typedef enum {
diff --git a/src/media-channel.c b/src/media-channel.c
index 2bd46ac..2e870c2 100644
--- a/src/media-channel.c
+++ b/src/media-channel.c
@@ -1465,9 +1465,9 @@ CHOOSE_TRANSPORT:
/* We prefer ICE, Google-P2P, then raw UDP */
if (gabble_presence_resource_has_caps (presence, resource,
- PRESENCE_CAP_JINGLE_TRANSPORT_ICE))
+ PRESENCE_CAP_JINGLE_TRANSPORT_ICEUDP))
{
- *transport_ns = NS_JINGLE_TRANSPORT_ICE;
+ *transport_ns = NS_JINGLE_TRANSPORT_ICEUDP;
}
else if (gabble_presence_resource_has_caps (presence, resource,
PRESENCE_CAP_GOOGLE_TRANSPORT_P2P))
@@ -2482,7 +2482,7 @@ stream_direction_changed_cb (GabbleMediaStream *stream,
#define JINGLE_CAPS \
( PRESENCE_CAP_JINGLE015 | PRESENCE_CAP_JINGLE032 \
- | PRESENCE_CAP_GOOGLE_TRANSPORT_P2P )
+ | PRESENCE_CAP_JINGLE_TRANSPORT_RAWUDP )
#define JINGLE_AUDIO_CAPS \
( PRESENCE_CAP_JINGLE_RTP | PRESENCE_CAP_JINGLE_RTP_AUDIO \
@@ -2496,20 +2496,37 @@ GabblePresenceCapabilities
_gabble_media_channel_typeflags_to_caps (TpChannelMediaCapabilities flags)
{
GabblePresenceCapabilities caps = 0;
+ gboolean gtalk_p2p;
- /* currently we can only signal any (GTalk or Jingle calls) using
- * the GTalk-P2P transport */
- if (flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P)
+ DEBUG ("adding Jingle caps (%s, %s)",
+ flags & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO ? "audio" : "no audio",
+ flags & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO ? "video" : "no video");
+
+ /* We speak Jingle (old and new), and can always do raw UDP */
+ caps |= JINGLE_CAPS;
+
+ if (flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_ICE_UDP)
+ caps |= PRESENCE_CAP_JINGLE_TRANSPORT_ICEUDP;
+
+ gtalk_p2p = flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P;
+
+ if (gtalk_p2p)
+ caps |= PRESENCE_CAP_GOOGLE_TRANSPORT_P2P;
+
+ if (flags & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO)
{
- DEBUG ("adding jingle caps");
+ caps |= JINGLE_AUDIO_CAPS;
- caps |= JINGLE_CAPS;
+ if (gtalk_p2p)
+ caps |= GTALK_CAPS;
+ }
- if (flags & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO)
- caps |= GTALK_CAPS | JINGLE_AUDIO_CAPS;
+ if (flags & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO)
+ {
+ caps |= JINGLE_VIDEO_CAPS;
- if (flags & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO)
- caps |= GTALK_VIDEO_CAPS | JINGLE_VIDEO_CAPS;
+ if (gtalk_p2p)
+ caps |= GTALK_VIDEO_CAPS;
}
return caps;
diff --git a/src/namespaces.h b/src/namespaces.h
index 391154f..e88513e 100644
--- a/src/namespaces.h
+++ b/src/namespaces.h
@@ -70,13 +70,12 @@
/* Video capability in Google's Jingle dialect */
#define NS_GOOGLE_SESSION_VIDEO "http://www.google.com/session/video"
-/* Jingle ICE-UDP transport */
-#define NS_JINGLE_TRANSPORT_ICE \
- "http://jabber.org/protocol/jingle/transport/ice"
/* google-p2p transport */
#define NS_GOOGLE_TRANSPORT_P2P "http://www.google.com/transport/p2p"
/* Jingle RAW-UDP transport */
#define NS_JINGLE_TRANSPORT_RAWUDP "urn:xmpp:jingle:transports:raw-udp:0"
+/* Jingle ICE-UDP transport */
+#define NS_JINGLE_TRANSPORT_ICEUDP "urn:xmpp:jingle:transports:ice-udp:0"
#define NS_MUC "http://jabber.org/protocol/muc"
#define NS_MUC_BYTESTREAM "http://telepathy.freedesktop.org/xmpp/protocol/muc-bytestream"
diff --git a/src/types.h b/src/types.h
index f891417..9384301 100644
--- a/src/types.h
+++ b/src/types.h
@@ -48,6 +48,7 @@ typedef struct _GabbleJingleSession GabbleJingleSession;
typedef struct _GabbleJingleContent GabbleJingleContent;
typedef struct _GabbleJingleTransportGoogle GabbleJingleTransportGoogle;
typedef struct _GabbleJingleTransportRawUdp GabbleJingleTransportRawUdp;
+typedef struct _GabbleJingleTransportIceUdp GabbleJingleTransportIceUdp;
typedef struct _GabbleJingleMediaRtp GabbleJingleMediaRtp;
typedef struct _JingleCandidate JingleCandidate;
@@ -73,7 +74,7 @@ typedef enum {
PRESENCE_CAP_OLPC_1 = 1 << 11,
PRESENCE_CAP_JINGLE_RTP = 1 << 12,
PRESENCE_CAP_JINGLE032 = 1 << 13,
- PRESENCE_CAP_JINGLE_TRANSPORT_ICE = 1 << 14,
+ PRESENCE_CAP_JINGLE_TRANSPORT_ICEUDP = 1 << 14,
PRESENCE_CAP_JINGLE_TRANSPORT_RAWUDP = 1 << 15,
PRESENCE_CAP_GEOLOCATION = 1 << 16,
PRESENCE_CAP_SI_FILE_TRANSFER = 1 << 17,
--
1.5.6.5
More information about the telepathy-commits
mailing list