summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ruprecht <maiku@pidgin.im>2008-09-01 01:23:26 +0000
committerMichael Ruprecht <maiku@pidgin.im>2008-09-01 01:23:26 +0000
commiteb0c867550bca06d1b1cc2acaa53c21254c85777 (patch)
tree5bdcc3a3a96cbf59dd0cc08a4fed7ad3a1392e5a
parent0097a99a8ff396d071e11a0e70a934ec152b48f3 (diff)
downloadpidgin-eb0c867550bca06d1b1cc2acaa53c21254c85777.tar.gz
Add params to purple_media_add_stream to allow for different libNice
compatibility modes needed for GTalk and MSN.
-rw-r--r--libpurple/media.c31
-rw-r--r--libpurple/media.h3
-rw-r--r--libpurple/protocols/jabber/google.c3
-rw-r--r--libpurple/protocols/jabber/jingle.c4
4 files changed, 23 insertions, 18 deletions
diff --git a/libpurple/media.c b/libpurple/media.c
index 64f2206f12..531a97b128 100644
--- a/libpurple/media.c
+++ b/libpurple/media.c
@@ -1040,7 +1040,8 @@ static gboolean
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 @@ purple_media_add_stream_internal(PurpleMedia *media, const gchar *sess_id,
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(&param[0].value, G_TYPE_STRING);
- g_value_take_string(&param[0].value, stun_ip);
+ param[num_params].name = "stun-ip";
+ g_value_init(&param[num_params].value, G_TYPE_STRING);
+ g_value_take_string(&param[num_params].value, stun_ip);
- param[1].name = "stun-timeout";
- g_value_init(&param[1].value, G_TYPE_UINT);
- g_value_set_uint(&param[1].value, 5);
+ param[num_params+1].name = "stun-timeout";
+ g_value_init(&param[num_params+1].value, G_TYPE_UINT);
+ g_value_set_uint(&param[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 @@ purple_media_add_stream_internal(PurpleMedia *media, const gchar *sess_id,
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 @@ purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, const gchar *w
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 @@ purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, const gchar *w
if (!purple_media_add_stream_internal(media, sess_id, who,
FS_MEDIA_TYPE_VIDEO, type_direction,
- transmitter)) {
+ transmitter, num_params, params)) {
return FALSE;
}
}
diff --git a/libpurple/media.h b/libpurple/media.h
index 963d8fd848..2156996a2e 100644
--- a/libpurple/media.h
+++ b/libpurple/media.h
@@ -345,7 +345,8 @@ void purple_media_video_init_recv(GstElement **sendbin);
* @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 --git a/libpurple/protocols/jabber/google.c b/libpurple/protocols/jabber/google.c
index 2124f9ef1c..30acbeb1b6 100644
--- a/libpurple/protocols/jabber/google.c
+++ b/libpurple/protocols/jabber/google.c
@@ -218,8 +218,9 @@ google_session_handle_initiate(JabberStream *js, GoogleSession *session, xmlnode
"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 --git a/libpurple/protocols/jabber/jingle.c b/libpurple/protocols/jabber/jingle.c
index 7f4be5bef3..efc54ac3fd 100644
--- a/libpurple/protocols/jabber/jingle.c
+++ b/libpurple/protocols/jabber/jingle.c
@@ -976,13 +976,13 @@ jabber_jingle_session_initiate_media_internal(JingleSession *session,
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");
}