[telepathy-salut/master] connection: save presence/message and set once established if set after self is created

Jonny Lamb jonny.lamb at collabora.co.uk
Wed Sep 9 01:49:06 PDT 2009


Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
 src/salut-connection.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/salut-connection.c b/src/salut-connection.c
index 40aad29..d2c50a3 100644
--- a/src/salut-connection.c
+++ b/src/salut-connection.c
@@ -184,6 +184,7 @@ struct _SalutConnectionPrivate
 
   /* TpHandler for our presence on the lan */
   SalutSelf *self;
+  gboolean self_established;
   SalutPresenceId pre_connect_presence;
   gchar *pre_connect_message;
 
@@ -294,6 +295,7 @@ salut_connection_init (SalutConnection *obj)
 
   priv->discovery_client = NULL;
   priv->self = NULL;
+  priv->self_established = FALSE;
 
   priv->pre_connect_presence = SALUT_PRESENCE_AVAILABLE;
   priv->pre_connect_message = NULL;
@@ -580,8 +582,9 @@ set_self_presence (SalutConnection *self,
   SalutConnectionPrivate *priv = SALUT_CONNECTION_GET_PRIVATE (self);
   TpBaseConnection *base = TP_BASE_CONNECTION (self);
 
-  if (priv->self == NULL)
+  if (priv->self == NULL || !priv->self_established)
     {
+      g_free (priv->pre_connect_message);
       priv->pre_connect_presence = presence;
       priv->pre_connect_message = g_strdup (message);
       return;
@@ -973,6 +976,8 @@ _self_established_cb (SalutSelf *s, gpointer data)
       TP_BASE_CONNECTION (self), TP_HANDLE_TYPE_CONTACT);
   GError *error = NULL;
 
+  priv->self_established = TRUE;
+
   g_free (self->name);
   self->name = g_strdup (s->name);
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list