aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/e-mail-session.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/mail/e-mail-session.c b/mail/e-mail-session.c
index 8f76506dc8..1ceb98f9f0 100644
--- a/mail/e-mail-session.c
+++ b/mail/e-mail-session.c
@@ -603,24 +603,23 @@ mail_session_get_password (CamelSession *session,
guint32 flags,
GError **error)
{
- gchar *url = NULL;
- gchar *ret = NULL;
EAccount *account = NULL;
+ const gchar *uid = NULL;
+ gchar *ret = NULL;
- if (service != NULL) {
- CamelURL *service_url;
-
- service_url = camel_service_get_camel_url (service);
- url = camel_url_to_string (service_url, CAMEL_URL_HIDE_ALL);
+ if (CAMEL_IS_SERVICE (service)) {
+ uid = camel_service_get_uid (service);
+ account = e_get_account_by_uid (uid);
}
if (!strcmp(item, "popb4smtp_uid")) {
/* not 100% mt safe, but should be ok */
- if (url
- && (account = e_get_account_by_transport_url (url)))
+ if (account != NULL)
ret = g_strdup (account->source->url);
- else
- ret = g_strdup (url);
+ else if (CAMEL_IS_SERVICE (service)) {
+ CamelURL *url = camel_service_get_camel_url (service);
+ ret = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
+ }
} else {
gchar *key = mail_session_make_key (service, item);
EAccountService *config_service = NULL;
@@ -635,10 +634,10 @@ mail_session_get_password (CamelSession *session,
g_free (ret);
ret = NULL;
- if (url) {
- if ((account = e_get_account_by_source_url (url)))
+ if (account != NULL) {
+ if (CAMEL_IS_STORE (service))
config_service = account->source;
- else if ((account = e_get_account_by_transport_url (url)))
+ if (CAMEL_IS_TRANSPORT (service))
config_service = account->transport;
}
@@ -704,8 +703,6 @@ mail_session_get_password (CamelSession *session,
g_free (key);
}
- g_free (url);
-
if (ret == NULL)
g_set_error (
error, G_IO_ERROR,