* Fixes NB#91689. fixes a wrong check for ASCII
[modest] / src / modest-protocol-registry.c
index 3aae13b..dae386f 100644 (file)
@@ -154,7 +154,8 @@ modest_protocol_registry_instance_init (ModestProtocolRegistry *obj)
 
        priv = MODEST_PROTOCOL_REGISTRY_GET_PRIVATE (obj);
 
-       priv->tags_table = g_hash_table_new (g_str_hash, g_str_equal);
+       priv->tags_table = g_hash_table_new_full (g_str_hash, g_str_equal, 
+                                                 g_free, (GDestroyNotify) g_hash_table_unref);
        priv->priorities = g_hash_table_new (g_direct_hash, g_direct_equal);
        
        modest_protocol_registry_create_tag (obj, TAG_ALL_PROTOCOLS);
@@ -163,6 +164,15 @@ modest_protocol_registry_instance_init (ModestProtocolRegistry *obj)
 static void   
 modest_protocol_registry_finalize   (GObject *obj)
 {
+       ModestProtocolRegistryPrivate *priv;
+
+       priv = MODEST_PROTOCOL_REGISTRY_GET_PRIVATE (obj);
+
+       /* Free hash tables */
+       if (priv->tags_table)
+               g_hash_table_unref (priv->tags_table);
+       if (priv->priorities)
+               g_hash_table_unref (priv->priorities);
 
        G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
@@ -205,7 +215,7 @@ modest_protocol_registry_add (ModestProtocolRegistry *self, ModestProtocol *prot
                tag_table = g_hash_table_lookup (priv->tags_table, node->data);
                if (tag_table == NULL)
                        tag_table = modest_protocol_registry_create_tag (self, node->data);
-               g_hash_table_insert (tag_table, GINT_TO_POINTER (modest_protocol_get_type_id (protocol)), protocol);
+               g_hash_table_insert (tag_table, GINT_TO_POINTER (modest_protocol_get_type_id (protocol)), g_object_ref (protocol));
        }
        g_slist_free (tags_list);
 }
@@ -372,7 +382,8 @@ modest_protocol_registry_create_tag (ModestProtocolRegistry *self, const gchar *
 
        g_assert (tag != NULL);
        priv = MODEST_PROTOCOL_REGISTRY_GET_PRIVATE (self);
-       tag_table = g_hash_table_new (g_direct_hash, g_direct_equal);
+       tag_table = g_hash_table_new_full (g_direct_hash, g_direct_equal, 
+                                          NULL, g_object_unref);
        g_hash_table_insert (priv->tags_table, g_strdup (tag), tag_table);
 
        return tag_table;
@@ -418,6 +429,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_TRANSPORT_STORE_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_TRANSPORT_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
 
        protocol = modest_account_protocol_new ("smtp", N_("SMTP Server"),
                                                25, 465,
@@ -429,6 +441,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_TRANSPORT_STORE_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_TRANSPORT_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
 
        protocol = modest_account_protocol_new ("pop", _("mail_fi_emailtype_pop3"),
                                                110, 995,
@@ -446,6 +459,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_HAS_LEAVE_ON_SERVER_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_STORE_FORBID_MESSAGE_ADD,
                                      NULL);
+       g_object_unref (protocol);
 
        protocol = modest_account_protocol_new ("imap", _("mail_fi_emailtype_imap"),
                                                143, 993,
@@ -472,6 +486,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_REMOTE_STORE_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_STORE_HAS_FOLDERS,
                                      NULL);
+       g_object_unref (protocol);
 
        protocol = modest_account_protocol_new ("maildir", N_("Maildir"),
                                                0, 0,
@@ -485,6 +500,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_LOCAL_STORE_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_STORE_HAS_FOLDERS,
                                      NULL);
+       g_object_unref (protocol);
 
        protocol = modest_account_protocol_new ("mbox", N_("MBox"),
                                                0, 0,
@@ -498,6 +514,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_LOCAL_STORE_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_STORE_HAS_FOLDERS,
                                      NULL);
+       g_object_unref (protocol);
 
        protocol = modest_protocol_new ("none", N_("None"));
        modest_protocol_set (protocol, MODEST_PROTOCOL_SECURITY_ACCOUNT_OPTION, MODEST_ACCOUNT_OPTION_SSL_NEVER);
@@ -505,6 +522,8 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
        modest_protocol_registry_add (self, protocol, 7,
                                      MODEST_PROTOCOL_REGISTRY_CONNECTION_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
+
        protocol = modest_protocol_new ("ssl", N_("SSL"));
        modest_protocol_set (protocol, MODEST_PROTOCOL_SECURITY_ACCOUNT_OPTION, MODEST_ACCOUNT_OPTION_SSL_WRAPPED);
        ssl_connection_protocol_type_id = modest_protocol_get_type_id (protocol);
@@ -513,6 +532,8 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_SECURE_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_USE_ALTERNATE_PORT,
                                      NULL);
+       g_object_unref (protocol);
+
        protocol = modest_protocol_new ("tls", N_("TLS"));
        modest_protocol_set (protocol, MODEST_PROTOCOL_SECURITY_ACCOUNT_OPTION, MODEST_ACCOUNT_OPTION_SSL_TLS);
        tls_connection_protocol_type_id = modest_protocol_get_type_id (protocol);
@@ -520,6 +541,8 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_CONNECTION_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_SECURE_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
+
        protocol = modest_protocol_new ("tls-op", N_("TLS when possible"));
        modest_protocol_set (protocol, MODEST_PROTOCOL_SECURITY_ACCOUNT_OPTION, MODEST_ACCOUNT_OPTION_SSL_WHEN_POSSIBLE);
        tlsop_connection_protocol_type_id = modest_protocol_get_type_id (protocol);
@@ -527,12 +550,16 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_CONNECTION_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_SECURE_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
+
        protocol = modest_protocol_new (MODEST_ACCOUNT_AUTH_MECH_VALUE_NONE, _("mcen_fi_advsetup_smtp_none"));
        none_auth_protocol_type_id = modest_protocol_get_type_id (protocol);
        modest_protocol_set (protocol, MODEST_PROTOCOL_AUTH_ACCOUNT_OPTION, MODEST_ACCOUNT_AUTH_PLAIN);
        modest_protocol_registry_add (self, protocol, 11,
                                      MODEST_PROTOCOL_REGISTRY_AUTH_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
+
        protocol = modest_protocol_new (MODEST_ACCOUNT_AUTH_MECH_VALUE_PASSWORD, _("mcen_fi_advsetup_smtp_login"));
        password_auth_protocol_type_id = modest_protocol_get_type_id (protocol);
        modest_protocol_set (protocol, MODEST_PROTOCOL_AUTH_ACCOUNT_OPTION, MODEST_ACCOUNT_AUTH_PASSWORD);
@@ -540,6 +567,8 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_AUTH_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_SECURE_PROTOCOLS,
                                      NULL);
+       g_object_unref (protocol);
+
        protocol = modest_protocol_new (MODEST_ACCOUNT_AUTH_MECH_VALUE_CRAMMD5, _("mcen_fi_advsetup_smtp_cram_md5"));
        crammd5_auth_protocol_type_id = modest_protocol_get_type_id (protocol);
        modest_protocol_set (protocol, MODEST_PROTOCOL_AUTH_ACCOUNT_OPTION, MODEST_ACCOUNT_AUTH_CRAMMD5);
@@ -547,35 +576,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self)
                                      MODEST_PROTOCOL_REGISTRY_AUTH_PROTOCOLS,
                                      MODEST_PROTOCOL_REGISTRY_SECURE_PROTOCOLS,
                                      NULL);
-
-#if 0
-       /********** WARNING: Test code ( *********/
-#include "modest-testplugin-protocol.h"
-       protocol = (ModestProtocol *)
-               modest_testplugin_protocol_new ("testplugin", _("mcen_va_testplugin"),
-                                                80, 443,
-                                                TNY_TYPE_CAMEL_IMAP_STORE_ACCOUNT);
-       modest_protocol_registry_add (self, protocol, 50,
-                                     MODEST_PROTOCOL_REGISTRY_TRANSPORT_STORE_PROTOCOLS,
-                                     MODEST_PROTOCOL_REGISTRY_STORE_PROTOCOLS,
-                                     MODEST_PROTOCOL_REGISTRY_REMOTE_STORE_PROTOCOLS,
-                                     MODEST_PROTOCOL_REGISTRY_STORE_HAS_FOLDERS,
-                                     MODEST_PROTOCOL_REGISTRY_PROVIDER_PROTOCOLS,
-                                     NULL);
-
-       protocol =  (ModestProtocol *)
-               modest_testplugin_protocol_new ("testplugin-transport", _("mcen_va_testplugin"),
-                                                80, 443,
-                                                TNY_TYPE_CAMEL_TRANSPORT_ACCOUNT);
-       modest_protocol_registry_add (self, protocol, 51,
-                                     MODEST_PROTOCOL_REGISTRY_TRANSPORT_STORE_PROTOCOLS,
-                                     MODEST_PROTOCOL_REGISTRY_TRANSPORT_PROTOCOLS,
-                                     MODEST_PROTOCOL_REGISTRY_PROVIDER_PROTOCOLS,
-                                     NULL);
-
-       /********* WARNING: Test code ( *********/
-#endif
-
+       g_object_unref (protocol);
 
        /* set the custom auth mechs. We do this after creating all the protocols, because if we don't, then we
         * won't register the auth protocol type id's properly */