# HG changeset patch # User Marcus Lundblad # Date 1231549765 0 # Node ID 8e0ff15f835a3fe0f419bf6dc5948687e2153fe5 # Parent c80f151b159a9241f6f1c1060fb4c7fcc8dba987 Setup all prefs for TURN Some more preparation for setting the TURN param when creating the FsSession diff -r c80f151b159a -r 8e0ff15f835a libpurple/media.c --- a/libpurple/media.c Sat Jan 10 00:49:07 2009 +0000 +++ b/libpurple/media.c Sat Jan 10 01:09:25 2009 +0000 @@ -1307,6 +1307,15 @@ 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 @@ 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 @@ 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, diff -r c80f151b159a -r 8e0ff15f835a pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Sat Jan 10 00:49:07 2009 +0000 +++ b/pidgin/gtkprefs.c Sat Jan 10 01:09:25 2009 +0000 @@ -2613,7 +2613,10 @@ /* 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(); }