[Telepathy-commits] [telepathy-gabble/master] JingleFactory: save relay server and ports from jingle disco

Senko Rasic senko.rasic at collabora.co.uk
Wed Mar 4 10:55:39 PST 2009


---
 src/jingle-factory.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/src/jingle-factory.c b/src/jingle-factory.c
index 807df42..cb760b9 100644
--- a/src/jingle-factory.c
+++ b/src/jingle-factory.c
@@ -291,14 +291,15 @@ jingle_info_cb (LmMessageHandler *handler,
 
   if (node != NULL)
     {
-      node = lm_message_node_get_child (node, "token");
+      LmMessageNode *subnode;
 
-      if (node != NULL)
+      subnode = lm_message_node_get_child (node, "token");
+
+      if (subnode != NULL)
         {
           const gchar *token;
 
-          token = lm_message_node_get_value (node);
-
+          token = lm_message_node_get_value (subnode);
           if (token != NULL)
             {
               DEBUG ("jingle info: got Google relay token %s", token);
@@ -306,6 +307,52 @@ jingle_info_cb (LmMessageHandler *handler,
               fac->priv->relay_token = g_strdup (token);
             }
         }
+
+      subnode = lm_message_node_get_child (node, "server");
+
+      if (subnode != NULL)
+        {
+          const gchar *server;
+          const gchar *port;
+
+          server = lm_message_node_get_attribute (subnode, "host");
+
+          if (server != NULL)
+            {
+              DEBUG ("jingle info: got relay server %s", server);
+              g_free (fac->relay_server);
+              fac->relay_server = g_strdup (server);
+            }
+
+          /* FIXME: these are not really actually used anywhere at
+           * the moment, because we get the same info when creating
+           * relay session. */
+          port = lm_message_node_get_attribute (subnode, "udp");
+
+          if (port != NULL)
+            {
+              DEBUG ("jingle info: got relay udp port %s", port);
+              fac->relay_udp = atoi (port);
+            }
+
+          port = lm_message_node_get_attribute (subnode, "tcp");
+
+          if (port != NULL)
+            {
+              DEBUG ("jingle info: got relay tcp port %s", port);
+              fac->relay_tcp = atoi (port);
+            }
+
+          port = lm_message_node_get_attribute (subnode, "tcpssl");
+
+          if (port != NULL)
+            {
+              DEBUG ("jingle info: got relay tcpssl port %s", port);
+              fac->relay_ssltcp = atoi (port);
+            }
+
+        }
+
     }
 
   if (sub_type == LM_MESSAGE_SUB_TYPE_SET)
@@ -369,6 +416,7 @@ gabble_jingle_factory_dispose (GObject *object)
   g_free (fac->priv->stun_server);
   g_free (fac->priv->fallback_stun_server);
   g_free (fac->priv->relay_token);
+  g_free (fac->relay_server);
 
   if (priv->soup != NULL)
     {
-- 
1.5.6.5




More information about the telepathy-commits mailing list