[Telepathy-commits] [telepathy-gabble/master] GabbleJingleFactory: make stun_server, stun_port private and add an accessor

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Feb 25 05:40:33 PST 2009


---
 src/jingle-factory.c |   33 ++++++++++++++++++++++++++-------
 src/jingle-factory.h |    6 +++---
 src/media-channel.c  |   15 +++++++++++----
 3 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/src/jingle-factory.c b/src/jingle-factory.c
index 34dd297..c1658c6 100644
--- a/src/jingle-factory.c
+++ b/src/jingle-factory.c
@@ -65,6 +65,8 @@ struct _GabbleJingleFactoryPrivate
   GHashTable *transports;
   GHashTable *sessions;
 
+  gchar *stun_server;
+  guint16 stun_port;
   gchar *relay_token;
   gboolean get_stun_from_jingle;
   gboolean dispose_has_run;
@@ -174,14 +176,14 @@ jingle_info_cb (LmMessageHandler *handler,
           if (server != NULL)
             {
               DEBUG ("jingle info: got stun server %s", server);
-              g_free (fac->stun_server);
-              fac->stun_server = g_strdup (server);
+              g_free (priv->stun_server);
+              priv->stun_server = g_strdup (server);
             }
 
           if (port != NULL)
             {
               DEBUG ("jingle info: got stun port %s", port);
-              fac->stun_port = atoi (port);
+              priv->stun_port = atoi (port);
             }
         }
     }
@@ -265,7 +267,7 @@ gabble_jingle_factory_dispose (GObject *object)
   g_hash_table_destroy (priv->transports);
   priv->transports = NULL;
 
-  g_free (fac->stun_server);
+  g_free (fac->priv->stun_server);
   g_free (fac->priv->relay_token);
 
   if (G_OBJECT_CLASS (gabble_jingle_factory_parent_class)->dispose)
@@ -410,9 +412,9 @@ connection_status_changed_cb (GabbleConnection *conn,
             }
           else
             {
-              g_free (self->stun_server);
-              self->stun_server = stun_server;
-              self->stun_port = stun_port;
+              g_free (priv->stun_server);
+              priv->stun_server = stun_server;
+              priv->stun_port = stun_port;
             }
 
           if (priv->conn->features &
@@ -657,3 +659,20 @@ gabble_jingle_factory_get_google_relay_token (GabbleJingleFactory *self)
 {
   return self->priv->relay_token;
 }
+
+gboolean
+gabble_jingle_factory_get_stun_server (GabbleJingleFactory *self,
+                                       gchar **stun_server,
+                                       guint *stun_port)
+{
+  if (self->priv->stun_server == NULL || self->priv->stun_port == 0)
+    return FALSE;
+
+  if (stun_server != NULL)
+    *stun_server = g_strdup (self->priv->stun_server);
+
+  if (stun_port != NULL)
+    *stun_port = self->priv->stun_port;
+
+  return TRUE;
+}
diff --git a/src/jingle-factory.h b/src/jingle-factory.h
index 3553eae..e37e2e2 100644
--- a/src/jingle-factory.h
+++ b/src/jingle-factory.h
@@ -123,9 +123,6 @@ typedef struct _GabbleJingleFactoryPrivate GabbleJingleFactoryPrivate;
 struct _GabbleJingleFactory {
     GObject parent;
 
-    gchar *stun_server;
-    guint16 stun_port;
-
     GabbleJingleFactoryPrivate *priv;
 };
 
@@ -148,6 +145,9 @@ GabbleJingleSession *gabble_jingle_factory_create_session (GabbleJingleFactory
 const gchar *gabble_jingle_factory_get_google_relay_token (
     GabbleJingleFactory *self);
 
+gboolean gabble_jingle_factory_get_stun_server (GabbleJingleFactory *self,
+    gchar **stun_server, guint *stun_port);
+
 G_END_DECLS;
 
 #endif /* __JINGLE_FACTORY_H__ */
diff --git a/src/media-channel.c b/src/media-channel.c
index 83a7d6b..fb330c8 100644
--- a/src/media-channel.c
+++ b/src/media-channel.c
@@ -270,6 +270,8 @@ gabble_media_channel_constructor (GType type, guint n_props,
   TpHandleRepoIface *contact_handles;
   GabbleJingleFactory *jf;
   const gchar *relay_token;
+  gchar *stun_server;
+  guint stun_port;
 
   obj = G_OBJECT_CLASS (gabble_media_channel_parent_class)->
            constructor (type, n_props, props);
@@ -310,10 +312,15 @@ gabble_media_channel_constructor (GType type, guint n_props,
   /* Set up Google relay related properties */
   jf = priv->conn->jingle_factory;
 
-  if (jf->stun_server != NULL)
-      g_object_set (obj, "stun-server", jf->stun_server, NULL);
-  if (jf->stun_port != 0)
-      g_object_set (obj, "stun-port", jf->stun_port, NULL);
+  if (gabble_jingle_factory_get_stun_server (jf, &stun_server,
+        &stun_port))
+    {
+      g_object_set (obj,
+          "stun-server", stun_server,
+          "stun-port", stun_port,
+          NULL);
+      g_free (stun_server);
+    }
 
   relay_token = gabble_jingle_factory_get_google_relay_token (jf);
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list