summaryrefslogtreecommitdiff
path: root/telepathy-glib/account.c
diff options
context:
space:
mode:
Diffstat (limited to 'telepathy-glib/account.c')
-rw-r--r--telepathy-glib/account.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/telepathy-glib/account.c b/telepathy-glib/account.c
index 75f6375af..48202611f 100644
--- a/telepathy-glib/account.c
+++ b/telepathy-glib/account.c
@@ -444,6 +444,27 @@ _tp_account_update (TpAccount *account,
TpConnectionStatus old_s = priv->connection_status;
gboolean presence_changed = FALSE;
+ if (g_hash_table_lookup (properties, "Interfaces") != NULL)
+ {
+ gchar **interfaces, **iter;
+
+ interfaces = tp_asv_get_boxed (properties, "Interfaces", G_TYPE_STRV);
+
+ for (iter = interfaces; *iter != NULL; iter++)
+ {
+ if (tp_dbus_check_valid_interface_name (*iter, NULL))
+ {
+ GQuark q = g_quark_from_string (*iter);
+
+ tp_proxy_add_interface_by_id ((TpProxy *) account, q);
+ }
+ else
+ {
+ DEBUG ("\t\tInterface %s not valid", *iter);
+ }
+ }
+ }
+
if (g_hash_table_lookup (properties, "ConnectionStatus") != NULL)
priv->connection_status =
tp_asv_get_uint32 (properties, "ConnectionStatus", NULL);