# HG changeset patch # User Marcus Lundblad # Date 1231548547 0 # Node ID c80f151b159a9241f6f1c1060fb4c7fcc8dba987 # Parent 59188d90477349a95e90feeb8d5c2ffec13ec952 Added some preliminary prefs settings for configuring a TURN relay server Broke out the hostname -> IP lookup code used when setting the stun-ip property It doesn't yet set the properties for the TURN relay... diff -r 59188d904773 -r c80f151b159a libpurple/media.c --- a/libpurple/media.c Thu Jan 08 08:26:36 2009 +0000 +++ b/libpurple/media.c Sat Jan 10 00:49:07 2009 +0000 @@ -1277,25 +1277,34 @@ stream->session->id, stream->participant); } +/* this should probably be made IPv6-compatible some time, and made async? + maybe this should be a public function in libpurple...*/ +static gchar * +purple_media_get_ip(const gchar *hostname) +{ + struct hostent *host; + + if ((host = gethostbyname(hostname)) && host->h_addr) { + gchar *ip = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", + host->h_addr[0], host->h_addr[1], + host->h_addr[2], host->h_addr[3]); + purple_debug_info("media", "IP address for %s found: %s\n", + hostname, ip); + return ip; + } else { + purple_debug_info("media", "Unable to resolve %s IP address\n", + hostname); + return NULL; + } +} + static gchar * purple_media_get_stun_pref_ip() { const gchar *stun_pref = purple_prefs_get_string("/purple/network/stun_server"); - struct hostent *host; - - if ((host = gethostbyname(stun_pref)) && host->h_addr) { - gchar *stun_ip = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", - host->h_addr[0], host->h_addr[1], - host->h_addr[2], host->h_addr[3]); - purple_debug_info("media", "IP address for %s found: %s\n", - stun_pref, stun_ip); - return stun_ip; - } else { - purple_debug_info("media", "Unable to resolve %s IP address\n", - stun_pref); - return NULL; - } + + return purple_media_get_ip(stun_pref); } static gboolean diff -r 59188d904773 -r c80f151b159a pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Thu Jan 08 08:26:36 2009 +0000 +++ b/pidgin/gtkprefs.c Sat Jan 10 00:49:07 2009 +0000 @@ -1286,6 +1286,20 @@ g_signal_connect(G_OBJECT(ports_checkbox), "clicked", G_CALLBACK(pidgin_toggle_sensitive), spin_button); + /* Relay server (TURN) */ + vbox = pidgin_make_frame(ret, _("Relay Server")); + sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + pidgin_prefs_labeled_entry(vbox, _("_TURN server:"), + "/purple/network/turn_server", sg); + spin_button = pidgin_prefs_labeled_spin_button(vbox, _("_Port:"), + "/purple/network/turn_port", 0, 65535, sg); + pidgin_prefs_labeled_entry(vbox, + _("_Username:"), + "/purple/network/turn_username", sg); + pidgin_prefs_labeled_entry(vbox, + _("_Password:"), + "/purple/network/turn_password", sg); + if (purple_running_gnome()) { vbox = pidgin_make_frame(ret, _("Proxy Server & Browser")); prefs_proxy_frame = gtk_vbox_new(FALSE, 0); @@ -2595,6 +2609,11 @@ purple_prefs_add_int("/purple/media/audio/volume/input", 10); purple_prefs_add_int("/purple/media/audio/volume/output", 10); #endif /* USE_VV */ + + /* 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_int("/purple/network/turn_port", 3478); pidgin_prefs_update_old(); }