From b14caa3f7f5cd789d3cb02fc2dc9ec47c28154c1 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 8 Oct 2012 14:30:41 +0100 Subject: [PATCH 5/7] TpConnection: don't block introspection if the self-contact changes If the self-contact changes while we're introspecting it, the upgrade callback for the old self-contact does nothing, and we'll wait forever - unless we introspect the *new* self-contact, to get back on track. Unfortunately, we deleted the test-case for this on the 1.0 branch. It's a little harder to test, because introspecting the self-contact is usually instantaneous (the exception being if we force a round-trip while adding features). --- telepathy-glib/connection.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/telepathy-glib/connection.c b/telepathy-glib/connection.c index 79c1503..83f04ff 100644 --- a/telepathy-glib/connection.c +++ b/telepathy-glib/connection.c @@ -795,7 +795,8 @@ on_self_contact_changed (TpConnection *self, g_free (self->priv->last_known_self_id); self->priv->last_known_self_id = g_strdup (self_id); - if (tp_connection_get_status (self, NULL) == TP_CONNECTION_STATUS_CONNECTED) + if (self->priv->introspecting_after_connected || + tp_connection_get_status (self, NULL) == TP_CONNECTION_STATUS_CONNECTED) get_self_contact (self); } -- 1.7.10.4