diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2003-02-15 04:11:53 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2003-02-15 04:11:53 +0800 |
commit | 6545e80191916bea8705e0d4feb0e00192b36905 (patch) | |
tree | 51179e91f5a910f964e8db861e626d76e1bb2c5d /camel/providers/pop3 | |
parent | 4d98f14113b8cdf72226361d6904a6829a15f0e7 (diff) | |
download | gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.tar gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.tar.gz gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.tar.bz2 gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.tar.lz gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.tar.xz gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.tar.zst gsoc2013-evolution-6545e80191916bea8705e0d4feb0e00192b36905.zip |
Same as the gpg and pkcs7 contexts.
2003-02-14 Jeffrey Stedfast <fejj@ximian.com>
* camel-smime-context.c (smime_get_password): Same as the gpg and
pkcs7 contexts.
* camel-sasl-popb4smtp.c (popb4smtp_challenge): Updated for
camel_session_get_password().
* camel-pkcs7-context.c (get_password): Same as the gpg code.
* camel-gpg-context.c (gpg_ctx_parse_status): Updated for
camel_session_get_password().
* providers/smtp/camel-smtp-transport.c (smtp_connect): No need to
set USER_CANCEL exception here as it is done by
camel_session_get_password(). Also updated for the new
get_password() API change.
* providers/imap/camel-imap-store.c (imap_auth_loop): Updated for
camel_session_get_password() changes. We don't need to play the
"bad passwd" game here too, do we? Bah, probably should but I
don't feel like it for now. Maybe when we rewrite the IMAP
provider.
* camel-session.c (camel_session_get_password): Now takes a
'reprompt' argument that will force user-input to be given even if
we have the passwd cached.
* providers/pop3/camel-pop3-store.c (pop3_connect): Instead of
uncaching the passwd after we receive a -ERR from the POP server,
set 'reprompt' to TRUE to force user-input for the next password
prompt (ie, make sure the front-end knows not to just return the
cached value). The front-end can then decide to fill-in the
user-input field with the last passwd that the user supplied.
(pop3_try_authenticate): Now takes a reprompt argument which we
pass into camel_session_get_password().
svn path=/trunk/; revision=19912
Diffstat (limited to 'camel/providers/pop3')
-rw-r--r-- | camel/providers/pop3/camel-pop3-store.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c index 6452cb6a47..566d57c9ba 100644 --- a/camel/providers/pop3/camel-pop3-store.c +++ b/camel/providers/pop3/camel-pop3-store.c @@ -445,8 +445,7 @@ try_sasl(CamelPOP3Store *store, const char *mech, CamelException *ex) } static int -pop3_try_authenticate (CamelService *service, const char *errmsg, - CamelException *ex) +pop3_try_authenticate (CamelService *service, gboolean reprompt, const char *errmsg, CamelException *ex) { CamelPOP3Store *store = (CamelPOP3Store *)service; CamelPOP3Command *pcu = NULL, *pcp = NULL; @@ -455,7 +454,7 @@ pop3_try_authenticate (CamelService *service, const char *errmsg, /* override, testing only */ /*printf("Forcing authmech to 'login'\n"); service->url->authmech = g_strdup("LOGIN");*/ - + if (!service->url->passwd) { char *prompt; @@ -464,7 +463,7 @@ pop3_try_authenticate (CamelService *service, const char *errmsg, service->url->user, service->url->host); service->url->passwd = camel_session_get_password (camel_service_get_session (service), - prompt, TRUE, service, "password", ex); + prompt, reprompt, TRUE, service, "password", ex); g_free (prompt); if (!service->url->passwd) return FALSE; @@ -478,7 +477,7 @@ pop3_try_authenticate (CamelService *service, const char *errmsg, char *secret, md5asc[33], *d; unsigned char md5sum[16], *s; - secret = alloca(strlen(store->engine->apop)+strlen(service->url->passwd)+1); + secret = g_alloca(strlen(store->engine->apop)+strlen(service->url->passwd)+1); sprintf(secret, "%s%s", store->engine->apop, service->url->passwd); md5_get_digest(secret, strlen (secret), md5sum); @@ -534,14 +533,18 @@ pop3_try_authenticate (CamelService *service, const char *errmsg, static gboolean pop3_connect (CamelService *service, CamelException *ex) { + CamelPOP3Store *store = (CamelPOP3Store *)service; + gboolean reprompt = FALSE; + CamelSession *session; char *errbuf = NULL; int status; - CamelPOP3Store *store = (CamelPOP3Store *)service; + + session = camel_service_get_session (service); if (store->cache == NULL) { char *root; - root = camel_session_get_storage_path(service->session, service, ex); + root = camel_session_get_storage_path (session, service, ex); if (root) { store->cache = camel_data_cache_new(root, 0, ex); g_free(root); @@ -557,24 +560,21 @@ pop3_connect (CamelService *service, CamelException *ex) return FALSE; do { - camel_exception_clear(ex); - status = pop3_try_authenticate(service, errbuf, ex); - g_free(errbuf); + camel_exception_clear (ex); + status = pop3_try_authenticate (service, reprompt, errbuf, ex); + g_free (errbuf); errbuf = NULL; /* we only re-prompt if we failed to authenticate, any other error and we just abort */ if (camel_exception_get_id (ex) == CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE) { - errbuf = g_strdup_printf("%s\n\n", camel_exception_get_description(ex)); - - /* Uncache the password before prompting again. */ - camel_session_forget_password(camel_service_get_session (service), - service, "password", NULL); - g_free(service->url->passwd); + errbuf = g_strdup_printf ("%s\n\n", camel_exception_get_description (ex)); + g_free (service->url->passwd); service->url->passwd = NULL; + reprompt = TRUE; } - } while(status != -1 && ex->id == CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE); - - g_free(errbuf); + } while (status != -1 && ex->id == CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE); + + g_free (errbuf); if (status == -1 || camel_exception_is_set(ex)) { camel_service_disconnect(service, TRUE, ex); |