[evolution-data-server] CamelSmtpTransport: Use camel_service_set_password().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] CamelSmtpTransport: Use camel_service_set_password().
- Date: Mon, 26 Sep 2011 13:46:24 +0000 (UTC)
commit 46fc8e58918c38e06c707e969171662ab7551289
Author: Matthew Barnes <mbarnes redhat com>
Date: Sun Sep 25 19:12:05 2011 -0400
CamelSmtpTransport: Use camel_service_set_password().
Instead of stashing the password in its CamelURL.
camel/providers/smtp/camel-smtp-transport.c | 32 ++++++++++++++++-----------
1 files changed, 19 insertions(+), 13 deletions(-)
---
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index 260e9bd..5ba3676 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -380,18 +380,21 @@ smtp_transport_connect_sync (CamelService *service,
/* keep trying to login until either we succeed or the user cancels */
while (!authenticated) {
+ const gchar *password;
GError *local_error = NULL;
if (errbuf) {
/* We need to un-cache the password before prompting again */
password_flags |= CAMEL_SESSION_PASSWORD_REPROMPT;
- g_free (url->passwd);
- url->passwd = NULL;
+ camel_service_set_password (service, NULL);
}
- if (!url->passwd) {
+ password = camel_service_get_password (service);
+
+ if (password == NULL) {
gchar *base_prompt;
gchar *full_prompt;
+ gchar *new_passwd;
base_prompt = camel_session_build_password_prompt (
"SMTP", url->user, url->host);
@@ -401,16 +404,23 @@ smtp_transport_connect_sync (CamelService *service,
else
full_prompt = g_strdup (base_prompt);
- url->passwd = camel_session_get_password (
+ /* XXX This is a tad awkward. Maybe define a
+ * camel_service_ask_password() that calls
+ * camel_session_get_password() and caches
+ * the password itself? */
+ new_passwd = camel_session_get_password (
session, service, full_prompt,
"password", password_flags, error);
+ camel_service_set_password (service, new_passwd);
+ password = camel_service_get_password (service);
+ g_free (new_passwd);
g_free (base_prompt);
g_free (full_prompt);
g_free (errbuf);
errbuf = NULL;
- if (!url->passwd) {
+ if (password == NULL) {
camel_service_disconnect_sync (
service, TRUE, NULL);
return FALSE;
@@ -427,8 +437,7 @@ smtp_transport_connect_sync (CamelService *service,
if (!authenticated) {
if (g_cancellable_is_cancelled (cancellable) ||
g_error_matches (local_error, CAMEL_SERVICE_ERROR, CAMEL_SERVICE_ERROR_UNAVAILABLE)) {
- g_free (url->passwd);
- url->passwd = NULL;
+ camel_service_set_password (service, NULL);
if (local_error)
g_clear_error (&local_error);
@@ -442,8 +451,7 @@ smtp_transport_connect_sync (CamelService *service,
local_error ? local_error->message : _("Unknown error"));
g_clear_error (&local_error);
- g_free (url->passwd);
- url->passwd = NULL;
+ camel_service_set_password (service, NULL);
}
}
@@ -1219,10 +1227,8 @@ smtp_auth (CamelSmtpTransport *transport,
/* If our authentication data was rejected, destroy the
* password so that the user gets prompted to try again. */
- if (strncmp (respbuf, "535", 3) == 0) {
- g_free (url->passwd);
- url->passwd = NULL;
- }
+ if (strncmp (respbuf, "535", 3) == 0)
+ camel_service_set_password (service, NULL);
/* Catch any other errors. */
if (strncmp (respbuf, "235", 3) != 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]