# HG changeset patch # User Mike Ruprecht # Date 1220232206 0 # Node ID 6ab96d5d8ac6bd28e60c62a257a963660330eab0 # Parent 5606408fff593fd4be29356d32d612e6857f8f18 Add params to purple_media_add_stream to allow for different libNice compatibility modes needed for GTalk and MSN. diff -r 5606408fff59 -r 6ab96d5d8ac6 libpurple/media.c --- a/libpurple/media.c Sun Aug 31 23:27:05 2008 +0000 +++ b/libpurple/media.c Mon Sep 01 01:23:26 2008 +0000 @@ -1040,7 +1040,8 @@ purple_media_add_stream_internal(PurpleMedia *media, const gchar *sess_id, const gchar *who, FsMediaType type, FsStreamDirection type_direction, - const gchar *transmitter) + const gchar *transmitter, + guint num_params, GParameter *params) { PurpleMediaSession *session = purple_media_get_session(media, sess_id); FsParticipant *participant = NULL; @@ -1115,25 +1116,26 @@ if (!strcmp(transmitter, "rawudp") && (stun_ip = purple_media_get_stun_pref_ip())) { - GParameter param[2]; - memset(param, 0, sizeof(GParameter) * 2); + GParameter *param = g_new0(GParameter, num_params+2); + memcpy(param, params, sizeof(GParameter) * num_params); - param[0].name = "stun-ip"; - g_value_init(¶m[0].value, G_TYPE_STRING); - g_value_take_string(¶m[0].value, stun_ip); + param[num_params].name = "stun-ip"; + g_value_init(¶m[num_params].value, G_TYPE_STRING); + g_value_take_string(¶m[num_params].value, stun_ip); - param[1].name = "stun-timeout"; - g_value_init(¶m[1].value, G_TYPE_UINT); - g_value_set_uint(¶m[1].value, 5); + param[num_params+1].name = "stun-timeout"; + g_value_init(¶m[num_params+1].value, G_TYPE_UINT); + g_value_set_uint(¶m[num_params+1].value, 5); stream = fs_session_new_stream(session->session, participant, type_direction, - transmitter, 2, param, &err); + transmitter, num_params+2, param, &err); + g_free(param); g_free(stun_ip); } else { stream = fs_session_new_stream(session->session, participant, type_direction, - transmitter, 0, NULL, &err); + transmitter, num_params, params, &err); } if (err) { @@ -1164,7 +1166,8 @@ gboolean purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, const gchar *who, PurpleMediaSessionType type, - const gchar *transmitter) + const gchar *transmitter, + guint num_params, GParameter *params) { FsStreamDirection type_direction; @@ -1173,7 +1176,7 @@ if (!purple_media_add_stream_internal(media, sess_id, who, FS_MEDIA_TYPE_AUDIO, type_direction, - transmitter)) { + transmitter, num_params, params)) { return FALSE; } } @@ -1182,7 +1185,7 @@ if (!purple_media_add_stream_internal(media, sess_id, who, FS_MEDIA_TYPE_VIDEO, type_direction, - transmitter)) { + transmitter, num_params, params)) { return FALSE; } } diff -r 5606408fff59 -r 6ab96d5d8ac6 libpurple/media.h --- a/libpurple/media.h Sun Aug 31 23:27:05 2008 +0000 +++ b/libpurple/media.h Mon Sep 01 01:23:26 2008 +0000 @@ -345,7 +345,8 @@ * @return @c TRUE The stream was added successfully, @c FALSE otherwise. */ gboolean purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, const gchar *who, - PurpleMediaSessionType type, const gchar *transmitter); + PurpleMediaSessionType type, const gchar *transmitter, + guint num_params, GParameter *params); /** * Removes a stream from a session. diff -r 5606408fff59 -r 6ab96d5d8ac6 libpurple/protocols/jabber/google.c --- a/libpurple/protocols/jabber/google.c Sun Aug 31 23:27:05 2008 +0000 +++ b/libpurple/protocols/jabber/google.c Mon Sep 01 01:23:26 2008 +0000 @@ -218,8 +218,9 @@ "fsrtpconference", session->remote_jid); /* "rawudp" will need to be changed to "nice" when libnice is finished */ + /* GTalk will require the NICE_COMPATIBILITY_GOOGLE param */ purple_media_add_stream(session->media, "google-voice", session->remote_jid, - PURPLE_MEDIA_AUDIO, "rawudp"); + PURPLE_MEDIA_AUDIO, "rawudp", 0, NULL); desc_element = xmlnode_get_child(sess, "description"); diff -r 5606408fff59 -r 6ab96d5d8ac6 libpurple/protocols/jabber/jingle.c --- a/libpurple/protocols/jabber/jingle.c Sun Aug 31 23:27:05 2008 +0000 +++ b/libpurple/protocols/jabber/jingle.c Mon Sep 01 01:23:26 2008 +0000 @@ -976,13 +976,13 @@ if (jabber_jingle_session_content_is_vv_type(jsc, "audio")) { result = purple_media_add_stream(media, "audio-content", remote_jid, purple_media_from_fs(FS_MEDIA_TYPE_AUDIO, direction), - "rawudp"); + "rawudp", 0, NULL); purple_debug_info("jingle", "Created Jingle audio session\n"); } else if (jabber_jingle_session_content_is_vv_type(jsc, "video")) { result = purple_media_add_stream(media, "video-content", remote_jid, purple_media_from_fs(FS_MEDIA_TYPE_VIDEO, direction), - "rawudp"); + "rawudp", 0, NULL); purple_debug_info("jingle", "Created Jingle video session\n"); }