Diffstat (limited to 'kmicromail/libmailwrapper/imapwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libmailwrapper/imapwrapper.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp index 93fb7de..09e52b8 100644 --- a/kmicromail/libmailwrapper/imapwrapper.cpp +++ b/kmicromail/libmailwrapper/imapwrapper.cpp @@ -124,5 +124,5 @@ bool IMAPwrapper::start_tls(bool force_tls) } -void IMAPwrapper::login() +void IMAPwrapper::login(bool tryTLS) // = true) { QString server, user, pass; @@ -196,9 +196,9 @@ void IMAPwrapper::login() return; } - - if (!ssl) { - try_tls = start_tls(force_tls); + if ( tryTLS ) { + if (!ssl) { + try_tls = start_tls(force_tls); + } } - bool ok = true; if (force_tls && !try_tls) { @@ -213,4 +213,11 @@ void IMAPwrapper::login() err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() ); if ( err != MAILIMAP_NO_ERROR ) { + if ( tryTLS && !force_tls && !try_tls ) { + err = mailimap_close( m_imap ); + mailimap_free( m_imap ); + m_imap = 0; + login( false ); + return; + } Global::statusMessage(i18n("error logging in imap server: %1").arg(m_imap->imap_response)); ok = false; |