From 08d493a056aa2bc326f8d1f5f3c0dfa61511ceb1 Mon Sep 17 00:00:00 2001 From: hiro Date: Tue, 24 Jan 2006 07:45:31 +0000 Subject: save temporary IMAP4 password. Don't try to connect to IMAP4 server when closing folder. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@921 ee746299-78ed-0310-b773-934348b2243d --- libsylph/imap.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'libsylph/imap.c') diff --git a/libsylph/imap.c b/libsylph/imap.c index ac0cd1b2..ceffb2c0 100644 --- a/libsylph/imap.c +++ b/libsylph/imap.c @@ -588,7 +588,7 @@ static gint imap_session_connect(IMAPSession *session) { SockInfo *sock; PrefsAccount *account; - gchar *pass; + const gchar *pass; g_return_val_if_fail(session != NULL, IMAP_ERROR); @@ -598,15 +598,18 @@ static gint imap_session_connect(IMAPSession *session) SESSION(session)->server, SESSION(session)->port); pass = account->passwd; + if (!pass) + pass = account->tmp_pass; if (!pass) { gchar *tmp_pass; + tmp_pass = input_query_password(account->recv_server, account->userid); if (!tmp_pass) return IMAP_ERROR; - Xstrdup_a(pass, tmp_pass, - {g_free(tmp_pass); return IMAP_ERROR;}); - g_free(tmp_pass); + + account->tmp_pass = tmp_pass; + pass = account->tmp_pass; } #if USE_SSL @@ -650,6 +653,10 @@ static gint imap_session_connect(IMAPSession *session) if (!session->authenticated && imap_auth(session, account->userid, pass, account->imap_auth_type) != IMAP_SUCCESS) { + if (account->tmp_pass) { + g_free(account->tmp_pass); + account->tmp_pass = NULL; + } imap_cmd_logout(session); return IMAP_AUTHFAIL; } @@ -1599,6 +1606,9 @@ static gint imap_close(Folder *folder, FolderItem *item) if (!item->path) return 0; + if (!REMOTE_FOLDER(folder)->session) + return 0; + session = imap_session_get(folder); if (!session) return -1; -- cgit v1.2.3