evolution r36758 - trunk/mail



Author: abharath
Date: Fri Nov  7 06:32:34 2008
New Revision: 36758
URL: http://svn.gnome.org/viewvc/evolution?rev=36758&view=rev

Log:
Committing on behalf of Matthew Barnes  <mbarnes redhat com>

2008-11-07  Matthew Barnes  <mbarnes redhat com>

        ** Fix for bug #552583

        * mail-config.c: (mail_config_get_account_by_source_url): 
        Instead of preserving the authmech attribute in the two URLs 
        being compared, strip the attributes out of both URLs and just do 
        a simple string comparison.  We're just trying to match a URL to 
        an account here.  The authentication method shouldn't be relevant.


Modified:
   trunk/mail/ChangeLog
   trunk/mail/mail-config.c

Modified: trunk/mail/mail-config.c
==============================================================================
--- trunk/mail/mail-config.c	(original)
+++ trunk/mail/mail-config.c	Fri Nov  7 06:32:34 2008
@@ -781,48 +781,49 @@
 EAccount *
 mail_config_get_account_by_source_url (const char *source_url)
 {
-	CamelProvider *provider;
-	EAccount *account;
-	CamelURL *source;
+	EAccount *account = NULL;
 	EIterator *iter;
 
 	g_return_val_if_fail (source_url != NULL, NULL);
 
-	provider = camel_provider_get(source_url, NULL);
-	if (!provider)
-		return NULL;
-
-	source = camel_url_new (source_url, NULL);
-	if (!source)
-		return NULL;
-
 	iter = e_list_get_iterator ((EList *) config->accounts);
 	while (e_iterator_is_valid (iter)) {
+		CamelURL *url;
+		gchar *string;
+
 		account = (EAccount *) e_iterator_get (iter);
 
-		if (account->source && account->source->url && account->source->url[0]) {
-			CamelURL *url;
+		e_iterator_next (iter);
 
-			url = camel_url_new (account->source->url, NULL);
-			if (url && provider->url_equal (url, source)) {
-				camel_url_free (url);
-				camel_url_free (source);
-				g_object_unref (iter);
+		if (account->source == NULL)
+			continue;
 
-				return account;
-			}
+		else if (account->source->url == NULL)
+			continue;
 
-			if (url)
-				camel_url_free (url);
-		}
+		else if (*account->source->url == '\0')
+			continue;
 
-		e_iterator_next (iter);
+		url = camel_url_new (account->source->url, NULL);
+		if (url == NULL)
+			continue;
+
+		/* Simplify the account URL for comparison. */
+		string = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
+		if (string == NULL || strcmp (string, source_url) != 0)
+			account = NULL;  /* not a match */
+
+		camel_url_free (url);
+		g_free (string);
+
+		if (account != NULL) {
+			g_object_unref (iter);
+			return account;
+		}
 	}
 
 	g_object_unref (iter);
 
-	camel_url_free (source);
-
 	return NULL;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]