aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy/empathy-account.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/libempathy/empathy-account.c b/libempathy/empathy-account.c
index 091950880..39b5d0f08 100644
--- a/libempathy/empathy-account.c
+++ b/libempathy/empathy-account.c
@@ -608,15 +608,19 @@ static void
empathy_account_free_connection (EmpathyAccount *account)
{
EmpathyAccountPriv *priv = GET_PRIV (account);
+ TpConnection *conn;
+
+ if (priv->connection == NULL)
+ return;
+
+ conn = priv->connection;
+ priv->connection = NULL;
if (priv->connection_invalidated_id != 0)
- g_signal_handler_disconnect (priv->connection,
- priv->connection_invalidated_id);
+ g_signal_handler_disconnect (conn, priv->connection_invalidated_id);
priv->connection_invalidated_id = 0;
- if (priv->connection != NULL)
- g_object_unref (priv->connection);
- priv->connection = NULL;
+ g_object_unref (conn);
}
void
@@ -853,12 +857,7 @@ _empathy_account_connection_invalidated_cb (TpProxy *self,
g_assert (priv->connection == TP_CONNECTION (self));
- g_signal_handler_disconnect (priv->connection,
- priv->connection_invalidated_id);
- priv->connection_invalidated_id = 0;
-
- g_object_unref (priv->connection);
- priv->connection = NULL;
+ empathy_account_free_connection (account);
g_object_notify (G_OBJECT (account), "connection");
}
@@ -878,15 +877,7 @@ _empathy_account_set_connection (EmpathyAccount *account,
return;
}
- if (priv->connection != NULL)
- {
- g_signal_handler_disconnect (priv->connection,
- priv->connection_invalidated_id);
- priv->connection_invalidated_id = 0;
-
- g_object_unref (priv->connection);
- priv->connection = NULL;
- }
+ empathy_account_free_connection (account);
if (tp_strdiff ("/", path))
{