]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-protocol-chooser.c
Merge remote-tracking branch 'jonny/ft'
[empathy.git] / libempathy-gtk / empathy-protocol-chooser.c
index 689f6a28a94115d95ecd8cdbe4eb084d25feee5e..216e4ffdb96f190b541a9377bb88274dd5b67cc7 100644 (file)
@@ -365,7 +365,7 @@ protocol_chooser_finalize (GObject *object)
 
   if (priv->protocols)
     {
-      g_hash_table_destroy (priv->protocols);
+      g_hash_table_unref (priv->protocols);
       priv->protocols = NULL;
     }
 
@@ -561,16 +561,16 @@ empathy_protocol_chooser_set_visible (EmpathyProtocolChooser *protocol_chooser,
 EmpathyAccountSettings *
 empathy_protocol_chooser_create_account_settings (EmpathyProtocolChooser *self)
 {
-  EmpathyAccountSettings *settings;
+  EmpathyAccountSettings *settings = NULL;
   gchar *str;
   const gchar *display_name;
   TpConnectionManager *cm;
   TpConnectionManagerProtocol *proto;
-  gchar *service;
+  gchar *service = NULL;
 
   cm = empathy_protocol_chooser_dup_selected (self, &proto, &service);
   if (cm == NULL || proto == NULL)
-    return NULL;
+    goto out;
 
   if (service != NULL)
     display_name = empathy_service_name_to_display_name (service);
@@ -594,22 +594,38 @@ empathy_protocol_chooser_create_account_settings (EmpathyProtocolChooser *self)
           "talkx.l.google.com:80",
           NULL};
 
+      gchar *extra_certificate_identities[] = {
+          "talk.google.com",
+          NULL};
+
       empathy_account_settings_set_icon_name_async (settings, "im-google-talk",
           NULL, NULL);
-
+      empathy_account_settings_set_string (settings, "server",
+          extra_certificate_identities[0]);
+      empathy_account_settings_set_boolean (settings, "require-encryption",
+          TRUE);
       empathy_account_settings_set_strv (settings, "fallback-servers",
           fallback_servers);
+
+      if (empathy_account_settings_have_tp_param (settings,
+              "extra-certificate-identities"))
+        {
+          empathy_account_settings_set_strv (settings,
+              "extra-certificate-identities", extra_certificate_identities);
+        }
     }
   else if (!tp_strdiff (service, "facebook"))
     {
       empathy_account_settings_set_icon_name_async (settings, "im-facebook",
           NULL, NULL);
-
+      empathy_account_settings_set_boolean (settings, "require-encryption",
+          TRUE);
       empathy_account_settings_set_string (settings, "server",
           "chat.facebook.com");
     }
 
-  g_object_unref (cm);
+out:
+  tp_clear_object (&cm);
   g_free (service);
   return settings;
 }