# HG changeset patch # User Paul Aurich # Date 1238825758 0 # Node ID 9131368ba4beaae8b9c586e502843a23d3415d1f # Parent ecf6fd808d2341c3ba000253f77335f325dac01d Advertise ICEUDP only when libnice is available diff -r ecf6fd808d23 -r 9131368ba4be libpurple/media.c --- a/libpurple/media.c Sat Apr 04 05:50:34 2009 +0000 +++ b/libpurple/media.c Sat Apr 04 06:15:58 2009 +0000 @@ -40,6 +40,7 @@ #ifdef USE_VV #include +#include /** @copydoc _PurpleMediaSession */ typedef struct _PurpleMediaSession PurpleMediaSession; @@ -3057,3 +3058,26 @@ #endif } +gboolean +purple_media_transmitter_exists(const gchar *transmitter) +{ +#ifdef USE_VV + char **transmitters; + int i; + + g_return_val_if_fail(transmitter != NULL, FALSE); + + transmitters = fs_transmitter_list_available(); + for (i = 0; transmitters[i]; ++i) { + if (g_str_equal(transmitter, transmitters[i])) { + g_strfreev(transmitters); + return TRUE; + } + } + + g_strfreev(transmitters); + return FALSE; +#else + return FALSE; +#endif +} diff -r ecf6fd808d23 -r 9131368ba4be libpurple/media.h --- a/libpurple/media.h Sat Apr 04 05:50:34 2009 +0000 +++ b/libpurple/media.h Sat Apr 04 06:15:58 2009 +0000 @@ -597,6 +597,15 @@ */ void purple_media_remove_output_windows(PurpleMedia *media); +/** + * Returns whether or not a specific transmitter type is present. + * + * @param transmitter The name of the transmitter. + * + * @return TRUE if it is present, FALSE otherwise. + */ +gboolean purple_media_transmitter_exists(const gchar *transmitter); + #ifdef __cplusplus } #endif diff -r ecf6fd808d23 -r 9131368ba4be libpurple/protocols/jabber/jabber.c --- a/libpurple/protocols/jabber/jabber.c Sat Apr 04 05:50:34 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Sat Apr 04 06:15:58 2009 +0000 @@ -2748,6 +2748,12 @@ return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION)); } +static gboolean +feature_ice_transmitter_present(JabberStream *js, const char *namespace) +{ + return purple_media_transmitter_exists("nice"); +} + typedef struct { PurpleConnection *pc; gchar *who; @@ -3181,12 +3187,13 @@ /* Jingle features! */ jabber_add_feature(JINGLE, 0); jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0); - jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0); + #ifdef USE_VV jabber_add_feature("http://www.google.com/xmpp/protocol/session", feature_audio_enabled); jabber_add_feature("http://www.google.com/xmpp/protocol/voice/v1", feature_audio_enabled); jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, feature_audio_enabled); jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, feature_video_enabled); + jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, feature_ice_transmitter_present); #endif /* IPC functions */