pidgin.vv: 1fa05b8b: Setup all prefs for TURN

malu at pidgin.im malu at pidgin.im
Fri Jan 9 20:10:45 EST 2009


-----------------------------------------------------------------
Revision: 1fa05b8b4d069723f0cba486203a2a00c3baf096
Ancestor: 106c6ba87b3a431f8ec3adad7e4e569f3d008f83
Author: malu at pidgin.im
Date: 2009-01-10T01:09:25
Branch: im.pidgin.pidgin.vv
URL: http://d.pidgin.im/viewmtn/revision/info/1fa05b8b4d069723f0cba486203a2a00c3baf096

Modified files:
        libpurple/media.c pidgin/gtkprefs.c

ChangeLog: 

Setup all prefs for TURN
Some more preparation for setting the TURN param when creating the FsSession

-------------- next part --------------
============================================================
--- libpurple/media.c	aa453673acb28aa529d040f9945e9ccce3c1c00c
+++ libpurple/media.c	ace1525a6274e3b80cffb467edbc664aecc4bf78
@@ -1307,6 +1307,15 @@ purple_media_get_stun_pref_ip()
 	return purple_media_get_ip(stun_pref);
 }
 
+static gchar *
+purple_media_get_turn_pref_ip()
+{
+	const gchar *turn_pref =
+			purple_prefs_get_string("/purple/network/turn_server");
+	
+	return purple_media_get_ip(turn_pref);
+}
+
 static gboolean
 purple_media_add_stream_internal(PurpleMedia *media, const gchar *sess_id,
 				 const gchar *who, FsMediaType type,
@@ -1390,11 +1399,17 @@ purple_media_add_stream_internal(PurpleM
 
 	if (!stream) {
 		GError *err = NULL;
-		gchar *stun_ip = NULL;
 		FsStream *fsstream = NULL;
 
-		if ((stun_ip = purple_media_get_stun_pref_ip())) {
-			GParameter *param = g_new0(GParameter, num_params+1);
+		gchar *stun_ip = purple_media_get_stun_pref_ip();
+		gchar *turn_ip = purple_media_get_turn_pref_ip();
+		
+		if (stun_ip || turn_ip) {
+			int new_num_params = 
+				(stun_ip != NULL && turn_ip == NULL) || 
+				(stun_ip == NULL && turn_ip != NULL) ? 
+				num_params + 1 : num_params + 2;
+			GParameter *param = g_new0(GParameter, new_num_params);
 			memcpy(param, params, sizeof(GParameter) * num_params);
 
 			param[num_params].name = "stun-ip";
@@ -1403,9 +1418,12 @@ purple_media_add_stream_internal(PurpleM
 
 			fsstream = fs_session_new_stream(session->session,
 					participant, type_direction,
-					transmitter, num_params+1, param, &err);
+					transmitter, new_num_params, param, &err);
 			g_free(param);
-			g_free(stun_ip);
+			if (stun_ip)
+				g_free(stun_ip);
+			if (turn_ip)
+				g_free(turn_ip);
 		} else {
 			fsstream = fs_session_new_stream(session->session,
 					participant, type_direction,
============================================================
--- pidgin/gtkprefs.c	7459f4bea8cbf951be3bf717ab67e44c5028db91
+++ pidgin/gtkprefs.c	02b7dab253b8cef73c7cd7755092f145a79c2db0
@@ -2613,7 +2613,10 @@ pidgin_prefs_init(void)
 	/* set a default port for TURN server */
 	/* currently there is no default port for TURN, one option is to use the
 	 same port as STUN */
+	purple_prefs_add_string("/purple/network/turn_server", "");
 	purple_prefs_add_int("/purple/network/turn_port", 3478);
+	purple_prefs_add_string("/purple/network/turn_username", "");
+	purple_prefs_add_string("/purple/network/turn_password", "");
 
 	pidgin_prefs_update_old();
 }


More information about the Commits mailing list