evolution r35649 - trunk/mail
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r35649 - trunk/mail
- Date: Wed, 18 Jun 2008 16:36:52 +0000 (UTC)
Author: mbarnes
Date: Wed Jun 18 16:36:52 2008
New Revision: 35649
URL: http://svn.gnome.org/viewvc/evolution?rev=35649&view=rev
Log:
2008-06-18 Matthew Barnes <mbarnes redhat com>
** Fixes part of bug #532472
* mail/mail-config.c (mail_config_get_account_by_transport_url):
Strip the account URL (via CAMEL_URL_HIDE_ALL) before comparing
it to the already-stripped 'transport_url', to avoid unnecessary
password prompts.
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 Wed Jun 18 16:36:52 2008
@@ -829,48 +829,49 @@
EAccount *
mail_config_get_account_by_transport_url (const char *transport_url)
{
- CamelProvider *provider;
- CamelURL *transport;
- EAccount *account;
+ EAccount *account = NULL;
EIterator *iter;
g_return_val_if_fail (transport_url != NULL, NULL);
- provider = camel_provider_get(transport_url, NULL);
- if (!provider)
- return NULL;
-
- transport = camel_url_new (transport_url, NULL);
- if (!transport)
- 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->transport && account->transport->url && account->transport->url[0]) {
- CamelURL *url;
+ e_iterator_next (iter);
- url = camel_url_new (account->transport->url, NULL);
- if (url && provider->url_equal (url, transport)) {
- camel_url_free (url);
- camel_url_free (transport);
- g_object_unref (iter);
+ if (account->transport == NULL)
+ continue;
- return account;
- }
+ else if (account->transport->url == NULL)
+ continue;
- if (url)
- camel_url_free (url);
- }
+ else if (*account->transport->url == '\0')
+ continue;
- e_iterator_next (iter);
+ url = camel_url_new (account->transport->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, transport_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 (transport);
-
return NULL;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]