diff libpurple/protocols/jabber/jingle/jingle.c @ 26080:88f183f7dfc7

Add automatic discovery of GTalk STUN servers when using a Gtalk account Is used for STUN candidate genration, unless a STUN server is set in prefs Does not handle GTalk relay setup yet
author Marcus Lundblad <ml@update.uu.se>
date Tue, 03 Feb 2009 21:37:27 +0000
parents db517c55c508
children 0a5737e1e969
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jingle/jingle.c	Mon Feb 02 11:37:07 2009 +0000
+++ b/libpurple/protocols/jabber/jingle/jingle.c	Tue Feb 03 21:37:27 2009 +0000
@@ -20,6 +20,7 @@
  */
 
 #include "internal.h"
+#include "network.h"
 
 #include "content.h"
 #include "debug.h"
@@ -438,3 +439,32 @@
 				jingle_terminate_sessions_gh, NULL);
 }
 
+GParameter *
+jingle_get_params(JabberStream *js, guint *num)
+{
+	/* don't set a STUN server if one is set globally in prefs, in that case
+	 this will be handled in media.c */
+	gboolean has_account_stun = js->stun_ip && !purple_network_get_stun_ip();
+	guint num_params = has_account_stun ? 2 : 0;
+	GParameter *params = NULL;
+
+	if (num_params > 0) {
+		params = g_new0(GParameter, num_params);
+
+		purple_debug_info("jabber", 
+						  "setting param stun-ip for stream using Google auto-config: %s\n",
+						  js->stun_ip);
+		params[0].name = "stun-ip";
+		g_value_init(&params[0].value, G_TYPE_STRING);
+		g_value_set_string(&params[0].value, js->stun_ip);
+		purple_debug_info("jabber", 
+						  "setting param stun-port for stream using Google auto-config: %d\n",
+						  js->stun_port);
+		params[1].name = "stun-port";
+		g_value_init(&params[1].value, G_TYPE_UINT);
+		g_value_set_uint(&params[1].value, js->stun_port);
+	}
+
+	*num = num_params;
+	return params;
+}